
本文介绍如何通过 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)); // 防止负值
}
});
});
});? 关键设计说明:
jQuery可爱火箭回到顶部效果代码,当滑动网页到下面的时候,会出现小火箭,到顶部,小火箭消失,点击小火箭有个返回顶部的效果,一般我们在商城网站或者企业网站中经常用到这样的效果,php中文网推荐下载!
- index * 5:让第 0 个元素在滚动 0px 后即开始淡出,第 1 个延迟至 5px,第 2 个延迟至 10px……形成错峰消失效果;
- ((index + 1) * 100):分母随索引递增,使靠后的文本透明度下降更平缓(例如第 1 个文本在 scrollTop=100 时完全透明,而第 3 个需到 300px 才完全透明);
- Math.max(0, opacity):强制透明度不低于 0,避免 CSS 渲染异常。
✅ 补充建议:
- 若需更高性能,可结合 requestAnimationFrame 节流滚动事件;
- 现代项目推荐使用 CSS @scroll-timeline + animation 实现原生滚动驱动动画(兼容性需查 caniuse);
- 对于无 jQuery 依赖场景,可用 document.querySelectorAll('.text') 替代并用 forEach 遍历。
该方案兼顾可读性与实用性,适用于多段标题、引文或卡片式文案的渐进式退出动效。









