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

麻豆区

Skip to main content

Dr. Stanley Haan

Professor Emeritus

Education

  • BS, Calvin College, Physics and Mathematics, 1977
  • PhD, University of Colorado Boulder, Physics, 1983

Professional Experience

  • Professor, Calvin College, 1991–present
  • Academic dean, Calvin College, 2010–2017
  • Visiting scholar, University of Rochester (Rochester, NY), 1992–93
  • Associate professor, Calvin College, 1985–91
  • Visitor, JILA (Boulder, CO), 1986
  • Assistant professor, Calvin College, 1983–85
  • Consultant, JILA (Boulder, CO), 1984
  • Research associate, JILA, 1983, and assistant professor, University of Colorado at Denver, 1983

Academic Interests

Theoretical atomic physics, especially as relating to the interaction of atoms with high-intensity lasers; science education

Awards

APS Fellow

In 2010 Professor Haan was named a This is a distinguished honor from his professional peers, recognizing his outstanding contributions to physics research and education.  Professor Haan was honored for his cutting edge research in atomic physics.  His research spanned nearly three decades, including 54 research papers and a continuous string of grants from the National Science Foundation, dating back to 1987. The APS Division of Atomic, Molecular, and Optical Physics honored Haan "for contributions to the theory of photodetachment, photoionization, and photorecombination processes, including quantum and classical models for double ionization of atoms."  Former professors Vernon Ehlers, John Van Zytveld and David Van Baak have also received this honor.