, 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); })(); Evolution of Early Whales | 麻豆区

麻豆区

Skip to main content

Evolution of Early Whales

whale_research.jpg
Analyzing the anatomy of early fossil cetaceans in the context of modern mammals to understand the evolution of cetaceans from terrestrial ancestors.

The evolution of modern cetaceans (including whales, dolphins, and porpoises) from terrestrial ancestors required many drastic anatomical, physiological, and behavioral changes. The development of an efficient swimming mode in the earliest cetaceans is one key to understanding this remarkable transition. This behavioral change from a limb-dominated form of swimming to a tail-dominated form can be inferred from the anatomies of fossil whales, but it requires careful comparison with the anatomies of modern mammals, whose behaviors can be directly observed and correlated with their anatomies. This project seeks to develop a quantitative framework from the anatomies of modern mammals in order to infer the behavioral capabilities of early fossil whales. It involves working extensively with museum collections of modern and fossil mammals and utilizing multivariate statistical analyses to discern patterns in the data.


Student researchers

Melissa Braun, Josiah Valk, Alexandra Kuipers, Aaron Pemberton, Caedmon Morgret

Funded by

Calvin Alumni Association Faculty Research Grants, Jansma Family Research Fund in the Sciences, Diekema Research Fellowship, William H. and Celia I. Dornbush DeVries Family Student Research Fellowship, Joseph C. Stevens Research Fellowship, Beverly Klooster Biology Department Endowment, Bernard Klamer Biology Research Fund