, but this code // executes before the first paint, when

麻豆区

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); Kenneth Bratt | 麻豆区

麻豆区

Skip to main content

Dr. Kenneth Bratt

Professor Emeritus of Classics, Former Director of the Honors Program

Biography

Prof. Bratt is a native of Grand Rapids and a 1968 graduate of Calvin, as are his wife Laurel, their three children (Christina, Jessica, and Justin), their son-in-law Travis Porter (a history major), and their daughter-in-law Sarah Van Wingerden. As a Calvin senior Ken taught classes in the days when there was such demand that students in upper-level courses were recruited to teach first-year Latin! Drafted after graduation during the Vietnam War, his previous teaching experience landed him an assignment at the US Army Chaplain School in Ft. Hamilton, New York, instructing chaplain assistants in such subjects as liturgy. His graduate training was at Princeton University where he first engaged with classical archeology at the American School of Classical Studies in Athens and wrote his dissertation on Herodotus. 

Education

  • B.A., Calvin College, 1968
  • Ph.D. Princeton University, 1985

Academic Interests

During his 36 years at Calvin Ken taught virtually every course in the Classics curriculum, chairing the department for two terms and directing the Honors Program for 20 years. His major research interests are in the archeology of early Christianity, a subject he pursued during two sabbaticals in Athens and a January term in Israel. The fruits of those studies shaped his teaching of annual courses in classical art & architecture as well as many Calvin Interim courses in Greece, Turkey, and Italy. Today he continues to teach frequently for the CALL program (in which he is Curriculum Director) and to lead Calvin Alumni / CALL trips to Italy (2016), Greece (2019 & 2023), Croatia (2022), and the Rhine Valley (2024). 

Awards

, Calvin College, 2006