Appearance
模糊淡入滚动
元素初始状态完全模糊不可辨认,滚动进入视口后逐渐变得清晰锐利,同时配合位移和缩放营造深邃的空间感。
实时预览
代码
html
<style>
.blur-in-target {
opacity: 0;
filter: blur(20px);
transform: scale(0.85) translateY(20px);
transition:
opacity 0.8s ease-out,
filter 0.8s ease-out,
transform 0.8s ease-out;
}
.blur-in-target.visible {
opacity: 1;
filter: blur(0);
transform: scale(1) translateY(0);
}
</style>
<div class="blur-in-target">模糊显现</div>模糊淡入滚动滚动触发效果——元素在进入浏览器视口时触发 CSS transition 动画,从隐藏状态过渡到可见状态。配合 Intersection Observer API 实现视口检测,动画由 CSS 驱动,性能优异。
快速使用
- 复制 CSS 的初始状态和过渡样式到你的样式文件中
- 给需要滚动触发动画的元素添加初始类和
.scroll-target样式 - 使用 Intersection Observer(或本站提供的 JS)在元素进入视口时添加
.visible类 - 调整
transition的持续时间和缓动函数以匹配你的页面节奏
使用场景
- 首屏英雄区:页面加载后元素渐次出现,营造叙事节奏
- 产品特性展示:每滚动到一个特性区块,触发不同的入场动画
- 视差滚动:多层背景以不同速度滚动,营造深度感
- 长篇文章/落地页:滚动进度条给用户阅读进度的心理预期
常见问题
Q: 滚动动画需要 JavaScript 吗? A: 本站滚动动画的演示版用少量 JS(Intersection Observer)检测元素进入视口。纯 CSS 方案可用 @scroll-timeline(Chrome 实验性支持),但生产环境建议用 Intersection Observer + CSS transition 组合。
Q: 如何控制滚动动画只播放一次? A: Intersection Observer 中设置 once: true 选项,元素进入视口后移除 observer。或者添加 class 后就永久保留,利用 CSS transition 的 forwards 填充模式。
Q: 移动端滚动动画卡顿怎么办? A: 确保动画属性只用 transform 和 opacity;降低动画元素的复杂度(减少阴影、模糊等重效果);用 will-change: transform 提前提升合成层。
浏览器兼容性
| 浏览器 | 兼容性 |
|---|---|
| Chrome / Edge | ✅ 完全支持(Intersection Observer + CSS transition) |
| Firefox | ✅ 完全支持 |
| Safari | ✅ 完全支持 |
| 移动端浏览器 | ✅ 完全支持 |
| IE 11 | ❌ Intersection Observer 不支持,需 polyfill |
使用说明
| 属性 | 说明 |
|---|---|
filter: blur(20px) | 初始模糊程度,可调整范围 0-50px |
scale(0.85) | 配合模糊增加深度感 |
transition | 平滑过渡各属性变化 |
IntersectionObserver | 检测元素是否进入视口 |
threshold: 0.3 | 元素 30% 可见时触发动画 |
提示: 增大 blur() 值可以制造更强烈的"拨开迷雾"效果,配合 transition-duration 控制动画速度。