You're viewing the
dependabot/github_actions/pnpm/action-setup-6 deployment.scroll-fade
A fade on the edges of a scroll container, that follows the scroll position
Summary
A fade on the edges of a scroll container, where there is more content to scroll to.
shadcn's scroll-fade utility classes, available in any className: see its page for every class (scroll-fade-t, scroll-fade-<number>, scroll-fade-none…).
Usage
On the element that scrolls, the one with overflow-y-auto:
<div className="overflow-hidden rounded-2xl border">
<div className="h-72 scroll-fade overflow-y-auto">
<div className="flex flex-col gap-1.5 p-1.5">
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 1</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 2</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 3</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 4</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 5</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 6</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 7</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 8</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 9</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Item 10</div>
</div>
</div>
</div>
result:
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Item 10
At the top, only the bottom edge fades; mid-scroll, both; at the end, only the top. Content that does not overflow does not fade. In browsers without animation-timeline: scroll(), both edges fade, always.
The fade is a mask: it dissolves the content, and the border of the element with it. For a crisp border, put it on a wrapper.
Horizontal
scroll-fade-x, on the element with overflow-x-auto:
<div className="scroll-fade-x overflow-x-auto">
<div className="flex w-max gap-1.5">
<div className="rounded-lg bg-surface-container px-3 py-2.5">Design</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Engineering</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Marketing</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Product</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Research</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Sales</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Support</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Operations</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Finance</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Legal</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">People</div>
<div className="rounded-lg bg-surface-container px-3 py-2.5">Security</div>
</div>
</div>
result:
Design
Engineering
Marketing
Product
Research
Sales
Support
Operations
Finance
Legal
People
Security