GradualBlur
Layered backdrop-filter edge fade for parent or page overlays, presets, hover intensity, scroll reveal, responsive sizing, and GPU hints.
Usage
GradualBlur
Loading demo...
Direction (Top / Bottom / Left / Right)
Positions
Loading demo...
Preset
Presets
Loading demo...
Hover Intensity Boost (hoverIntensity)
HoverIntensity
Loading demo...
Trigger on Viewport (animated="scroll")
Animated scroll
Loading demo...
Page Target (target="page")
Target page
Loading demo...
Responsive Sizes (responsive)
Responsive sizes
Loading demo...
Best Practices
- Keep the parent
position: relativeandoverflow: hiddenfor card-local fades; usetarget="page"only for fixed viewport chrome. - Increase
divCountfor smoother fades, then tunestrength; very high layer counts multiply backdrop-filter work. - Prefer presets for common headers/footers and override one or two props instead of repeating the whole parameter matrix.
- Do not put interactive controls under the overlay unless
hoverIntensityis required; by default the overlay is pointer-transparent. - Check contrast in both themes because
backdrop-filteroutput depends on the content behind the overlay.
API Reference
Props
| Prop | Type | Default | Description |
|---|---|---|---|
position | 'top' | 'bottom' | 'left' | 'right' | 'bottom' | Edge where the blur overlay is anchored and the mask gradient direction is derived. |
strength | number | 2 | Multiplier used to calculate each layer's blur radius. |
height | string | '6rem' | Overlay thickness for top/bottom positions; also used as fallback width for left/right positions. |
width | string | - | Overlay width. Top/bottom default to 100%; left/right fall back to height when omitted. |
divCount | number | 5 | Number of masked blur layers; values below 1 are clamped to one layer. |
exponential | boolean | false | Uses exponential blur scaling instead of linear per-layer blur scaling. |
curve | 'linear' | 'bezier' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear' | Curve used to distribute blur progression across layers. |
opacity | number | 1 | Opacity applied to every blur layer. |
animated | boolean | 'scroll' | false | Enables opacity/filter transitions; 'scroll' waits for intersection visibility before fading in. |
duration | string | '0.3s' | CSS duration used by opacity and blur transitions. |
easing | string | 'ease-out' | CSS easing used by opacity and blur transitions. |
zIndex | number | 1000 | Base z-index. Page-target overlays add 100 to this value. |
target | 'parent' | 'page' | 'parent' | parent renders absolute positioning; page renders fixed positioning. |
hoverIntensity | number | - | Multiplies blur strength while hovered and enables pointer events on the overlay. |
responsive | boolean | false | Enables viewport-width based height/width overrides and installs a debounced resize listener. |
mobileHeight | string | - | Height used at viewport widths <= 480px when responsive is enabled. |
tabletHeight | string | - | Height used at viewport widths <= 768px when responsive is enabled. |
desktopHeight | string | - | Height used at viewport widths <= 1024px when responsive is enabled. |
mobileWidth | string | - | Width used at viewport widths <= 480px when responsive is enabled. |
tabletWidth | string | - | Width used at viewport widths <= 768px when responsive is enabled. |
desktopWidth | string | - | Width used at viewport widths <= 1024px when responsive is enabled. |
preset | 'top' | 'bottom' | 'left' | 'right' | 'subtle' | 'intense' | 'smooth' | 'sharp' | 'header' | 'footer' | 'sidebar' | 'page-header' | 'page-footer' | - | Applies a preset config first; explicitly provided props still override preset values. |
gpuOptimized | boolean | false | Adds will-change: backdrop-filter, opacity and translateZ(0) to the overlay. |
onAnimationComplete | () => void | - | Called after a scroll-triggered overlay becomes visible and the configured duration elapses. |
className | string | '' | Extra class appended to the root element. |
style | CSSProperties | {} | Extra inline style merged into the root style after generated positioning styles. |
Slots
| Slot | Description |
|---|---|
default | Optional content rendered above the blur layers inside the overlay root. |
Events
No Vue events are emitted. Use onAnimationComplete when animated="scroll" needs a completion hook.
Overview
- Presets are merged first; props explicitly present on the component override preset values.
positioncontrols both edge anchoring and mask-gradient direction. Vertical edges useheight; horizontal edges usewidthor fall back toheight.target="parent"rendersposition: absolute;target="page"rendersposition: fixed, uses full viewport width for vertical edges, and adds100tozIndex.divCountis floored and clamped to at least one layer. Each layer receives its own mask band andbackdrop-filterblur value.hoverIntensityenables pointer events and multipliesstrengthonly while the overlay is hovered.animated="scroll"starts hidden, observes the root withIntersectionObserver, and callsonAnimationCompleteafter the configureddurationonce visible.responsiveinstalls a debounced resize listener and applies mobile/tablet/desktop dimensions by viewport width (<=480,<=768,<=1024).styleis merged after generated positioning styles, so parent pages can deliberately override coordinates.
Technologies
- Accessibility note: The blur root is decorative and pointer-transparent by default. Enabling
hoverIntensityturns on pointer events, so keep it away from focusable controls unless the hover boost is essential. - Verified coverage:
gradual-blur.test.tsverifies configured layer rendering, slot content, page-target positioning and z-index offset, GPU styles, preset merging withdivCountclamping, hover-strength changes, and responsive dimensions. - Component source:
packages/tuffex/packages/components/src/gradual-blur/src/TxGradualBlur.vue. - Types:
packages/tuffex/packages/components/src/gradual-blur/src/types.tsexportsGradualBlurPropsand the position, curve, animated, and target unions. - Export alias:
packages/tuffex/packages/components/src/gradual-blur/index.tsexportsGradualBlur,TxGradualBlur,GradualBlurProps, andTxGradualBlurInstance. - Coverage:
packages/tuffex/packages/components/src/gradual-blur/__tests__/gradual-blur.test.tscovers layer generation, presets, page targeting, GPU optimization, hover intensity, and responsive sizing.
查看源码
packages/tuffex/packages/components/src/gradual-blur/index.ts