, 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); })(); A Crack in the Sea - News & Stories | 麻豆区

麻豆区

Skip to main content

Spark

A Crack in the Sea

Mon, Jun 05, 2017

A historical fantasy adventure written for high-school-age children and older, A Crack in the Sea (G.P. Putnam鈥檚 Sons, 2017) follows the journeys of three pairs of siblings who meet through a magical portal in the sea that delivers them to the Second World.

Author Heather (H.M.) Bouwman 鈥90 shares the stories of the siblings: Pip and Kinchen, inhabitants of the Second World; Venus and Swimmer, twins aboard the British slave ship Zong, bound for Jamaica in 1781; and Thanh and Sang, attempting to escape war-torn Vietnam in 1978.

While an exciting tale of sea monsters, pirate attacks and shark-infested waters, the book has a central message: the call to care for one鈥檚 neighbors near and far.

A fantasy novel 鈥渃an ask us to consider alternatives and possibilities,鈥 writes Bouwman. 鈥淲hat if we lived in a world where people didn鈥檛 die in chains, where people didn鈥檛 drown trying to escape from war and persecution, where somehow love, like magical water, surrounded us whenever most needed and held us up?

鈥淭he truth is we do live in a world where these things are possible. We simply have to choose to make them happen.鈥