, 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); })(); Adult Undergraduate Programs School of Graduate and Continuing Studies | 茄子视频

茄子视频

Skip to main content
School of Graduate & Continuing Studies

Adult Undergraduate Programs

Continuing Education at 茄子视频

Aspire. Belong. Complete.

Are you a curious, engaged, adult learner seeking to continue your education? Calvin鈥檚 programs for adults give you the flexibility and support you need to finish a degree or start a new one. You鈥檒l find great opportunities to learn new things, improve your skills, and meet new people. With Calvin鈥檚 programs, you鈥檒l be ready to design a better future for yourself and your community.

Image
Degree Completion at 茄子视频 - woman's smiling face

Bachelor's Degree Completion

Programs designed for adults who started a degree and now want to finish it.

Image
Wayfinder

Wayfinder Program

Free undergraduate college courses for adult learners facing barriers to higher education.

Image
A Calvin Prison Initiative graduate stands at a podium in his graduation cap and gown.

Calvin Prison Initiative

A Christian liberal arts program provided to incarcerated individuals at Handlon correctional facility.聽

Explore Programs

Applied Leadership

Delivery Mode
Hybrid
Degree Options
BA

Human Services

Delivery Mode
Hybrid
Degree Options
BA

Human Services (Handlon campus)

Degree Options
BA
Major

Wayfinder Program

Delivery Mode
On Campus
Degree Options
Cohort