贝利信息

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

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

本文介绍如何使用 jquery 实现页面滚动时,多个具有相同类名的文本元素按顺序、独立地渐隐消失,避免所有文字同步消失的问题。核心在于为每个元素计算差异化透明度,而非统一应用全局滚动值。

在网页滚动动画中,若对所有 .text 元素统一使用 $(window).scrollTop() 计算 opacity(如 1 - scrollTop / 250),会导致所有元素透明度完全同步变化——一旦滚动超过阈值,全部瞬间变透明,失去层次感与视觉节奏。正确解法是为每个元素引入基于其位置(索引)的偏移量和衰减系数,实现“逐行/逐段渐隐”的自然效果。

以下为优化后的 jQuery 实现:

$(document).ready(function() {
  $(window).scroll(function() {
    $('.text').each(function(index) {
      const scrollTop = $(window).scrollTop();
      // 每个元素延迟触发:第0个从0px开始淡出,第1个从5px,第2个从10px……
      const triggerOffset = index * 5;

      if (scrollTop > triggerOffset) {
        // 分母随索引增大而增大 → 后续元素淡出更缓慢,避免底部文字过早消失
        const fadeFactor = (index + 1) * 100;
        const opacity = Math.max(0, 1 - (scrollTop - triggerOffset) / fadeFactor);
        $(this).css("opacity", opacity);
      }
    });
  });
});

关键设计说明:

? 注意事项:

通过此方案,你将获得流畅、有层次的滚动淡出效果——每一行文字都像被卷轴缓缓收起,真正实现“随滚动渐隐”的专业交互动效。