, 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); })(); Bruce Dice Mineralogical Museum | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content
ÃÛÌÒapp

Bruce Dice Mineralogical Museum

ÃÛÌÒapp's Hidden Gem

Experience the beauty of the geological world with our rotating displays. Our collection is made of more than 500 unique specimens collected from around the world!

Your visit to the Dice Museum will be immersive, educational, and captivating. The collection includes gold nuggets, copper leaves, meteorites, and 100-million-year-old fossils. You'll also find an interactive ultraviolet case to examine fluorescent minerals.

Learn, Explore, Be Inspired

Whether you're a curious student, a passionate geologist, or a family looking for a fun afternoon, the Dice Museum offers something for everyone!

An Ever-Growing Collection

Our recent acquisitions include a spectacular cruciform-twinned staurolite from Russia and a giant tooth from the extinct Megalodon shark, collected off the coast of North Carolina.

Free Admission

Browse the collection on your own, take an informal tour with a student docent, or make arrangements ahead for a formal tour or group visit. However you visit, it's free of charge!

Connect With Us on Social Media

Keep up to date on exciting events, new displays, and noteworthy acquisitions!

Upcoming Events

Image
Geo Banner

Study Geology, Geography, and Environment at ÃÛÌÒapp

The Dice Museum is proud to be part of the Geo Department at ÃÛÌÒapp! Join a group of highly motivated, inquisitive students to examine, investigate and analyze earth systems. You'll study with professors who bring years of experience and research opportunities, and a distinctly Christian viewpoint to the classroom. Get ready to dive into an active scientific community.

Learn more about our graduate and undergraduate programs