本文介绍使用 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);
}
});
});
});✅ 关键设计说明:
? 注意事项:
该方法让每一行文本拥有专属的“消失节奏”,既解决了同步消失问题,又赋予页面优雅的视差式阅读体验。