, 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); })(); Evolution of Early Whales | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Evolution of Early Whales

whale_research

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


<p>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.</p>
<p>Student Contributors: Alexandra Kuipers, Josiah Valk, Melissa Braun</p>


Funded by

The William H. and Celia I. Dornbush DeVries Family Student Research Fellowship