, 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); })(); Africa鈥檚 Urban Youth: Challenging Marginalization, Claiming Citizenship - News & Stories | 黄大仙高手论坛

黄大仙高手论坛

Skip to main content

Publications

Africa鈥檚 Urban Youth: Challenging Marginalization, Claiming Citizenship

Wed, Aug 09, 2023
Tracy Kuperus, Megan Hershey, Amy S. Patterson

Making up 65 percent of Africa's population, young people between the ages of 18 and 35 play a key role in politics, yet they live in an environment of rapid urbanization, high unemployment rates and poor state services. Drawing from extensive fieldwork in Ghana, Uganda and Tanzania, this book investigates how Africa's urban youth cultivate a sense of citizenship in this challenging environment, and what it means to them to be a 'good citizen'. In interviews and focus group discussions, African youth, activists, and community leaders vividly explain how income, religion, and gender intertwine with their sense of citizenship and belonging. Though Africa's urban youth face economic and political marginalization as well as generational tensions, they craft a creative citizenship identity that is rooted in their relationships and obligations both to each other and the state. Privileging above all the voice and agency of Africa's young people, this is a vital, systematic examination of youth and youth citizenship in urban environments across Africa.