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

ÃÛÌÒapp

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); })(); People | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

People

Profile

Mark Breitenbach

Administrative Assistant
616-526-6500

Mark Christner

Head Coach - Women's Basketball
526-6164
Mark DeHaan

Mark DeHaan

Director of Development - Centers & Institutes
526-6184
Mark Hessler

Mark D. Hessler

Lecturer; Program Director, MPA Program; Associate Director, Pre-Law Program
616-526-6034
Mark Michmerhuizen

Mark Michmerhuizen

Associate Professor
616-526-6574
Mark Mulder

Mark Mulder

Professor, Director of Urban Studies
616-526-6755
Mark Muyskens

Mark Muyskens

Professor, Environmental Core Fellow
616-526-6269
Mark Stover Headshot

Mark Stover

Associate Professor; Director of Choral Activities (Capella, Campus Choir)
mark taylor

Mark Taylor

De Vries Institute Postdoctoral Fellow in Normative Business Ethics
Image of professor emeritus Mark Williams and his wife sitting in front of a stone archway

Mark Williams

Professor Emeritus of Classics
526-6293
Martin Austin

Martin Austin

Program Director, College Access Programs