Components
Tags
v1.2.0-beta.50
v1.2.0-beta.49
v1.2.0-beta.48
v1.2.0-beta.47
v1.2.0-beta.46
v1.2.0-beta.45
v1.2.0-beta.44
v1.2.0-beta.43
v1.2.0-beta.42
v1.2.0-beta.41
v1.2.0-beta.40
v1.2.0-beta.39
v1.2.0-beta.38
v1.2.0-beta.37
v1.2.0-beta.36
v1.2.0-beta.35
v1.2.0-beta.34
v1.2.0-beta.33
v1.2.0-beta.32
v1.2.0-beta.31
v1.2.0-beta.30
v1.2.0-beta.29
v1.2.0-beta.28
v1.2.0-beta.27
v1.2.0-beta.26
v1.2.0-beta.25
v1.2.0-beta.24
v1.2.0-beta.23
v1.2.0-beta.22
v1.2.0-beta.21
v1.2.0-beta.20
v1.2.0-beta.19
v1.2.0-beta.18
v1.2.0-beta.17
v1.2.0-beta.16
v1.2.0-beta.15
v1.2.0-beta.14
v1.2.0-beta.13
v1.2.0-beta.12
v1.2.0-beta.11
v1.2.0-beta.10
v1.2.0-beta.9
v1.2.0-beta.8
v1.2.0-beta.7
v1.2.0-beta.6
v1.2.0-beta.5
v1.2.0-beta.4
v1.2.0-beta.3
v1.2.0-beta.2
v1.2.0-beta.1
Installation
pnpm dlx shadcn@latest add https://deltacomponents.dev/r/scroll-fade-effect.jsonUsage
import { ScrollFadeEffect } from "@/components/ui/scroll-fade-effect"
export default function Example() {
return (
<ScrollFadeEffect className="h-72 w-48">
<div className="p-4">
{/* Your scrollable content */}
</div>
</ScrollFadeEffect>
)
}Examples
Adjustable Intensity
Use a slider to dynamically control the fade intensity. The intensity prop accepts pixel values.
64px
Tags
v1.2.0-beta.50
v1.2.0-beta.49
v1.2.0-beta.48
v1.2.0-beta.47
v1.2.0-beta.46
v1.2.0-beta.45
v1.2.0-beta.44
v1.2.0-beta.43
v1.2.0-beta.42
v1.2.0-beta.41
v1.2.0-beta.40
v1.2.0-beta.39
v1.2.0-beta.38
v1.2.0-beta.37
v1.2.0-beta.36
v1.2.0-beta.35
v1.2.0-beta.34
v1.2.0-beta.33
v1.2.0-beta.32
v1.2.0-beta.31
v1.2.0-beta.30
v1.2.0-beta.29
v1.2.0-beta.28
v1.2.0-beta.27
v1.2.0-beta.26
v1.2.0-beta.25
v1.2.0-beta.24
v1.2.0-beta.23
v1.2.0-beta.22
v1.2.0-beta.21
v1.2.0-beta.20
v1.2.0-beta.19
v1.2.0-beta.18
v1.2.0-beta.17
v1.2.0-beta.16
v1.2.0-beta.15
v1.2.0-beta.14
v1.2.0-beta.13
v1.2.0-beta.12
v1.2.0-beta.11
v1.2.0-beta.10
v1.2.0-beta.9
v1.2.0-beta.8
v1.2.0-beta.7
v1.2.0-beta.6
v1.2.0-beta.5
v1.2.0-beta.4
v1.2.0-beta.3
v1.2.0-beta.2
v1.2.0-beta.1
Horizontal Scroll
Use orientation="horizontal" for horizontally scrollable content with fade effects on the left and right edges.
<ScrollFadeEffect orientation="horizontal" className="h-24 w-full">
<div className="flex gap-4 p-4">
{Array.from({ length: 15 }, (_, i) => (
<div
key={i}
className="flex h-16 w-24 shrink-0 items-center justify-center rounded-lg bg-muted"
>
Item {i + 1}
</div>
))}
</div>
</ScrollFadeEffect>Custom Intensity
Control the fade size using the intensity prop. Values are in pixels.
{/* Light fade */}
<ScrollFadeEffect intensity={32} className="h-48 w-48">
{/* content */}
</ScrollFadeEffect>
{/* Default fade */}
<ScrollFadeEffect intensity={64} className="h-48 w-48">
{/* content */}
</ScrollFadeEffect>
{/* Heavy fade */}
<ScrollFadeEffect intensity={128} className="h-48 w-48">
{/* content */}
</ScrollFadeEffect>API Reference
ScrollFadeEffect
| Prop | Type | Default | Description |
|---|---|---|---|
| orientation | "vertical" | "horizontal" | "vertical" | The scroll direction of the container |
| intensity | number | 64 | The fade size in pixels |
| className | string | - | Additional CSS classes |
| style | React.CSSProperties | - | Additional inline styles |
| children | React.ReactNode | - | The scrollable content |
Features
- Scroll-driven Animations: Fade effects respond to scroll position - top fade appears when scrolled down, bottom fade hides when reaching the end
- CSS Mask Gradient: Uses CSS mask-image for smooth, hardware-accelerated fading
- Bidirectional Support: Works with both vertical and horizontal scrolling
- Configurable Intensity: Fine-tune the fade size in pixels
- Minimal Bundle Size: Pure CSS solution with scroll-driven animations
Accessibility
- Maintains native scroll behavior for assistive technologies
- Content remains fully accessible to screen readers
- Supports keyboard navigation with standard scroll shortcuts
Build Better User Experiences
Discover open source components that make the difference in your applications. Copy, paste, and customize to create exceptional user interfaces.
Browse components