, 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); })(); Alumni & Friends at the John Ball Zoo: Mon, Aug 11 2025, 9am - 1pm | Âé¶¹Çø

Âé¶¹Çø

Skip to main content

Events Calendar

S M T W T F S
27
 
28
 
29
 
30
 
31
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
1
 
2
 
3
 
4
 
5
 
6
 

Alumni & Friends at the John Ball Zoo

  • Mon, Aug 11, 2025
  • 9:00 am–1:00 pm
$18 adults (13+); $15 youth (3–13); free for birth–2
Image
White text on maroon background, reading "A Day at the John Ball Zoo"
The second of our Knight Time in August events: an outing to the John Ball Zoo!

Join us for a family-friendly morning on Monday, August 11 at the John Ball Zoo! 

All ages of Calvin alumni, friends, and current students are invited. Bring along a child, grandchild, friend, or anyone else who may enjoy a trip to the Zoo!

Tickets

Tickets are $18 for adults (age 13–up), $15 for youth (age 3–12), and free for children birth–2—and no processing fees! You will not receive a physical ticket. Instead, meet Alumni Office representatives outside of the ticketing area on Monday, August 11 to receive a wristband. 

Programming

There is no official programming—simply arrive and enjoy the Zoo at your own pace!

Rain Contingency

In the event of rain, we'll send an email to notify you of cancellation. If that happens, we'll mail your wristbands to the address you provided during registration so you can visit the Zoo on another day that works for you.

Address

1300 W. Fulton St.
Grand Rapids, MI 49504
United States

42.96383796479, -85.70272975