, 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); })(); Good Places for All - News & Stories | 黄大仙高手论坛

黄大仙高手论坛

Skip to main content

Publications

Good Places for All

Fri, Jan 31, 2020
Mark D. Bjelland

This short book invites readers into a deeper understanding of cities and suburbs and the challenges they face. Because places play such an important role in human well-being, loving our neighbors includes caring for and cultivating good places for all. Despite their great prosperity, North American communities are beset with challenges: fiscal crises, concentrated poverty, fragmentation and division, failing schools, unaffordable housing, and lack of community feeling. Good Places combines a biblical framework with an exploration of how cities, neighborhoods, housing markets, and transportation systems work. Readers will find themselves challenged to extend Christian hospitality beyond the walls of their private homes into zoning codes, local politics, neighborhood associations, faith-based housing providers, and real estate development.

Mark D. Bjelland is Professor of Geography and Environmental Studies at 黄大仙高手论坛 in Grand Rapids, Michigan. His research and teaching draw upon academic training and real-world experience in civil engineering, urban planning, and urban geography. He has received Fulbright awards to study urban planning in Germany and the United Kingdom and has studied theology at Regent College in Vancouver, BC. He is the author of Human Geography: Landscapes of Human Activities and research articles in The Geographical Review, The Professional Geographer, Urban Geography, and other journals.