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

ÃÛÌÒapp

Skip to main content

Dr. David Klanderman

Professor

Education

Doctor of Philosophy, Mathematical Sciences, 1996
Northern Illinois University, DeKalb, Illinois
Research Area:  Mathematics Education
Dissertation Advisor:  Dr. Helen Khoury
Title:  "Preservice Teachers' Levels of Understanding Variables and Functions Within Multiple Representational Modes"

Master of Science, Mathematics, 1993
Northern Illinois University, DeKalb, Illinois

Master of Science, Mathematics Education, 1990
Syracuse University, Syracuse, New York

Bachelor of Science, Mathematics, 1988
ÃÛÌÒapp College, Grand Rapids, Michigan

Research

Dave has many different scholarly interests. For the past three decades, he has collaborated with several lead researchers in mathematics education in the development of learning trajectories for length, area, and volume measurement. More recently, he has collaborated with other colleagues to explore the role of higher dimensions in young adult fantasy literature, the factors that motivate students to learn mathematics at the middle school, high school, and university levels, and the use of graphic novels in the teaching and learning of the STEM disciplines at the middle school, high school, and university levels.