Welcome to Vanilla Breeze
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
Animated chevron at the bottom of a hero nudging readers to scroll. Pure CSS, reduced-motion aware.
A small chevron pinned to the bottom of a hero section, gently bouncing to hint that more content lives below the fold. Used by countless marketing sites; recognised instantly by readers.
Anatomy:
inset-block-end::after pseudo-element renders the chevron glyphprefers-reduced-motion stops the bounce<header class="hero"> <hgroup> <h1>The hero</h1> <p>Headline copy here.</p> </hgroup> <a href="#below" class="scroll-down" aria-label="Scroll to content">Scroll</a></header><main id="below"> ...</main>
.scroll-down { position: absolute; inset-inline: 0; inset-block-end: var(--size-l); margin-inline: auto; inline-size: fit-content; color: white; text-decoration: none; font-size: var(--font-size-s); display: inline-flex; flex-direction: column; align-items: center; gap: var(--size-2xs);} .scroll-down::after { content: "↓"; display: block; font-size: 1.5rem; line-height: 1; animation: scroll-bounce 1.6s ease-in-out infinite;} @keyframes scroll-bounce { 0%, 100% { transform: translateY(0); opacity: 1; } 50% { transform: translateY(6px); opacity: 0.4; }} @media (prefers-reduced-motion: reduce) { .scroll-down::after { animation: none; }}
<a> rather than a button — the destination is content, not an action. Keyboard users get free Enter-to-scroll behaviour and you don't need any JavaScript.position: relative (or any non-static positioning) so the absolute indicator anchors to it.<icon-wc name="chevron-down"> instead of the unicode arrow for a sharper look.