, 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); })(); Native Plant Sale - Ecosystem Preserve | 茄子视频

茄子视频

Skip to main content

Native Plant Sale

Image
Fall Native Plant Sale

Online Native Plant Sale

Friday, May 23 - Wednesday, September 3

Order by Wednesday, pick up at the glass house on Venema Plaza on Friday.

.............................................................................................................

Fall Native Plant Sale

Save the date! Saturday, September 13 | 10 AM - 2 PM

...............................................................................................................

Volunteer with us this summer!

Become a volunteer! Join us in the greenhouse every M, W, TH!

For ages 18+ if a parent or guardian isn't present.

..........................................................

Stay in touch with us on and .

..................................................................................................................

View our Native Plant List & Cultural Guide聽for an idea of what products are available throughout the year.

Native plants are flowers, grasses, trees and shrubs that have inhabited Michigan since before European settlement. Each year, we collect native seeds from West Michigan and propagate them in our greenhouses. The Native Plant Sale features more than 100 rare, unusual, and favorite varieties of native wildflowers, shrubs, and grasses for all growing conditions, including drought-tolerant, rain garden, and shade species.

When the online native plant sale is open, orders are fulfilled on Thursdays and available for pickup on Fridays from the glass house at 1750 East Beltline Ave. SE, Grand Rapids, MI 49546.

Proceeds benefit educational and stewardship programs at the preserve. Thank you for your support!

LEARN MORE

For additional species information and photos, visit these online databases:

  • (best plants for birds)