贝利信息

如何实现滚动时文本逐个淡出效果

日期:2026-01-01 00:00 / 作者:花韻仙語

本文介绍使用 jquery 实现滚动过程中多个同名类文本元素(如 `.text`)按顺序、独立淡出的完整方案,解决所有元素同步消失的问题,并提供可调参数的响应式实现。

在网页滚动动画中,若对所有 .text 元素统一应用基于 scrollTop() 的全局透明度计算(如 1 - scrollTop / 250),会导致它们完全同步淡出——只要滚动距离超过阈值,所有文本瞬间变透明,失去层次感和视觉节奏。根本原因在于未区分每个元素在页面中的垂直位置关系

正确的做法是为每个 .text 元素建立独立的淡出触发点与衰减曲线。以下代码通过 $('.text').each() 遍历每个元素,并结合其 DOM 索引(index)动态生成差异化逻辑:

$(document).ready(function() {
  $(window).scroll(function() {
    $('.text').each(function(index) {
      const $this = $(this);
      const scrollTop = $(window).scrollTop();

      // 每个元素延迟开始淡出:第0个从0px起,第1个从5px起,依此类推
      if (scrollTop > index * 5) {
        // 分母随索引增大而增大 → 后续元素淡出更“慢”,形成错落感
        const fadeFactor = (index + 1) * 100;
        const opacity = Math.max(0, 1 - scrollTop / fadeFactor);
        $this.css('opacity', opacity);
      }
    });
  });
});

关键设计说明:

? 注意事项:

该方法让每一行文本拥有专属的“消失节奏”,既解决了同步消失问题,又赋予页面优雅的视差式阅读体验。