滚动文字揭示特效(滚动视差文字入场,方向实时可调)

JSCSS 许可:自研原创

滚动文字揭示特效:文字段落随进入视口逐行显现,支持上移、左移、右移、缩放四种入场方向实时切换,IntersectionObserver 驱动,零依赖自研实现。

效果演示(真实可交互)

📖 向下滚动:文字段落随进入视口逐行显现

壹 · 开场白

滚动揭示(Scroll Reveal)是长页面中最常用的叙事手法:内容不是一次性铺开,而是跟随读者的滚动节奏逐段出现,制造「探索感」与「期待感」。

贰 · 原理

本组件使用 IntersectionObserver 监听每个文字块与滚动容器的相交状态,进入视口时给元素加上「可见」类,由 CSS 过渡完成位移与透明度的动画。

相比直接监听 scroll 事件,观察器由浏览器底层调度,既省性能又不需要自己计算「是否进入视口」这一判断。

叁 · 细节

每一行的位移方向、距离与动画时长都可以独立调整:上移、左移、右移或缩放入场,配合不同的缓动曲线能产生完全不同的气质。

交错节奏也很重要:连续多行同时出现会显得生硬,让每行之间相差 60-100 毫秒错峰入场,视觉上会流畅得多。

肆 · 收尾

所有行进入视口后会被移出观察队列,不再重复触发,性能开销归零。点击下方「重新播放」可回到顶部再看一遍。

把这段文字换成你的产品介绍、品牌故事或文章正文,滚动阅读的体验立刻提升一个档次。

演示区用内嵌滚动容器模拟页面滚动,包含标题与段落共 10 行文字。右上角控件可实时切换四种入场方向,「重新播放」一键回到顶部重看。

完整代码

<div class="st-scroller" id="stScroller">
  <h3 class="st-line">壹 · 开场白</h3>
  <p class="st-line">滚动揭示是长页面最常用的叙事手法……</p>
</div>
.st-scroller h3, .st-scroller p {
  opacity: 0;
  transform: translateY(26px);          /* 上移入场 */
  transition: opacity .6s ease, transform .6s ease;
}
.st-scroller h3.in, .st-scroller p.in {
  opacity: 1;
  transform: none;
}
const lines = scroller.querySelectorAll('h3, p');
const io = new IntersectionObserver(entries => {
  entries.forEach(en => {
    if (en.isIntersecting) {
      en.target.classList.add('in');     // 进入视口 → 显示
      io.unobserve(en.target);           // 只播放一次,之后移出队列
    }
  });
}, { root: scroller, threshold: 0.25 });
lines.forEach(el => io.observe(el));

实现要点:初始状态 opacity: 0 加位移,观察器检测到元素与滚动容器相交超过 25% 时添加 .in 类,CSS 过渡自动完成显现。左移/右移只需把 translateY 换成 translateX,缩放入场则用 scale(.86) → 1。

参数说明

参数位置说明
入场方向data-dir 属性up / left / right / zoom 四种
位移距离CSS transform 数值建议 20-50px,过大显得拖沓
动画时长transition 的 0.6s0.4-0.8s 区间观感最佳
触发阈值threshold: 0.25元素进入视口 25% 时触发
监听根root: scroller局部容器用容器元素,整页用 null

兼容性与性能

常见问题

Q: 进入视口一瞬间文字闪现而不是动画? 检查初始状态是否在 CSS 里正确声明了 opacity: 0,且观察器在 DOM 就绪后才创建;本组件在脚本内绑定元素引用,不存在时序问题。

Q: 可以做成「滚动到哪亮到哪」的逐段高亮吗? 可以。把观察器的回调改为「离开视口时移除类」即可双向绑定,配合 threshold 数组能实现段落级高亮联动。

Q: 整页使用与容器使用有什么区别? 整页使用时 root 传 null(默认视口),容器内使用时传容器元素,其余代码完全一致。本组件演示即容器模式。

Q: 可以商用吗? 可以。本组件为粤喵自研原创代码,免费商用无需署名,无任何协议限制。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核