, 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); })(); David Diephouse | 麻豆区

麻豆区

Skip to main content

Dr. David Diephouse

Professor Emeritus

Biography

Prof. Diephouse, who retired from teaching in 2013, is a former academic dean and also served the college in several other administrative capacities. He and his wife, Evelyn, a retired pastor, have three grown daughters, three granddaughters and a grandson. For relaxation he enjoys hiking, classical music, reading detective novels, and drinking fine tea. He is the oldest current member of the Grand Rapids Choir of Men and Boys, an amateur pianist and harpsichordist, and an otherwise unpublished poet whose psalm versifications can be found in a number of hymnals.

Education

  • B.A., History, Calvin College
  • M.A., History, Princeton University
  • Ph.D., History, Princeton University

Academic Interests

Prof. Diephouse taught modern European history at Calvin for over thirty years. He was previously on the faculty at Rutgers University and has also served as a visiting instructor at Calvin Seminary. His primary area of interest is nineteenth- and twentieth-century Germany. Much of his research deals with the role of religion in German society and culture; he has published a number of studies on the Protestant churches in twentieth-century Germany, including Pastors and Pluralism in W眉rttemberg 1918-1933 (Princeton University Press, 1987). He has been a visiting fellow at the Institute for European History in Mainz, Germany, and has received a variety of research grants, including support from the American Philosophical Society and the Deutscher Akademischer Austauschdienst.