, 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); })(); Calvin students throw down—and fiber - News & Stories | 鶹

Skip to main content

Calvin News

Calvin students throw down—and fiber

Tue, Sep 30, 2008
Katie Landan

Pillow fights are no longer restricted to childhood sleepovers.

On Sunday, Sept. 28, Calvin students, among 2,000 other people, gathered in Rosa Parks Circle for a massive pillow fight. The event was coordinated by Rob Bliss, a local resident who organizes social experiments in downtown Grand Rapids about once a month. Bliss's Facebook page states that the purpose of these experiments is to create fun events and to “see what a massive mob of people can accomplish.”

Color coded

The rules were simple: each participant brought his or her own pillow and was required to wear a solid color, limited to black, brown, white, green, orange, red, yellow, purple and blue. Before the fight, participants were told to join other people wearing their chosen color. The Facebook page advertising the event read, “War cries and battle paint are encouraged.” The page also read: “To any onlookers, this will look like a living canvas revolting against itself. To any participants, this will be so much fun.”

One round, 10 minutes

Bliss sounded an air horn at 2 p.m. A group of about 30 Calvin students, wearing maroon shirts, fought on behalf of the college. The pillow fight lasted about 10 minutes, during which time participants beat each other with everything from couch pillows to goose down pillows. Other Calvin students watched the event.

Onlookers laughed at the melee. Although event goers were advised to be smart and safe, a participant was overheard saying in the heat of battle: “That pillow had something other than feathers in it. I think it was a Calvin student.”