本文介绍如何使用 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);
}
});
});
});✅ 关键设计
说明:
? 注意事项:
通过此方案,你将获得流畅、有层次的滚动淡出效果——每一行文字都像被卷轴缓缓收起,真正实现“随滚动渐隐”的专业交互动效。