本文介绍如何通过 jquery 实现页面滚动时,多个具有相同类名的文本元素按顺序、独立地渐隐消失,避免所有文本同步消失的问题。核心在于为每个元素设置基于其索引的差异化透明度计算逻辑。
在实现滚动淡出效果时,常见误区是直接对所有 .text 元素统一应用相同的 scrollTop() 计算公式(如
1 - $(window).scrollTop() / 250),这会导致所有文本在同一滚动位置瞬间归零透明度,失去层次感与视觉节奏。
正确做法是为每个元素引入唯一性偏移量——利用 .each() 遍历配合 index 参数,使每个文本的淡出起始位置和衰减速率与其 DOM 顺序相关联。以下是优化后的核心代码:
$(document).ready(function() {
$(window).scroll(function() {
$('.text').each(function(index) {
const scrollTop = $(window).scrollTop();
// 每个元素延迟开始淡出(index * 5px 偏移)
// 且衰减分母随索引增大而增大,确保下方文本淡出更缓慢
if (scrollTop > index * 5) {
const opacity = 1 - scrollTop / ((index + 1) * 100);
$(this).css('opacity', Math.max(0, opacity)); // 防止负值
}
});
});
});? 关键设计说明:
✅ 补充建议:
该方案兼顾可读性与实用性,适用于多段标题、引文或卡片式文案的渐进式退出动效。