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

发布时间 - 2026-01-01 00: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);
      }
    });
  });
});

关键设计说明:

  • index * 5:为每个 .text 元素设置垂直触发偏移,确保顶部元素先开始淡出,下方元素依次跟进;
  • (index + 1) * 100:使靠后的元素拥有更大的分母,透明度下降更平缓,防止底部内容“一闪而没”;
  • Math.max(0, ...):强制 opacity 不低于 0,避免负值导致异常渲染;
  • 使用 scrollTop - triggerOffset 确保淡出起始点精准对齐各元素实际进入视口的位置。

? 注意事项:

  • 若元素高度差异较大,建议改用 $(this).offset().top 替代 index 计算更精确的触发时机;
  • 生产环境推荐使用 requestAnimationFrame 节流滚动事件,或改用 CSS @scroll-timeline + opacity 过渡(现代浏览器支持)以提升性能;
  • 基础 HTML 结构需确保 .text 元素具备足够垂直间距(如通过 margin 或 line-height),否则视觉过渡会显得拥挤。

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


# css  # jquery  # html  # 浏览器  # win  # math  # 事件  # this  # margin  # 渐隐  # 多个  # 互动  # 更大  # 推荐使用  # 你将  # 而非  # 不低于  # 如何使用  # 都像 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何快速搭建自助建站会员专属系统?  android nfc常用标签读取总结  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  javascript基于原型链的继承及call和apply函数用法分析  Laravel如何实现一对一模型关联?(Eloquent示例)  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  JavaScript如何实现倒计时_时间函数如何精确控制  如何快速建站并高效导出源代码?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  香港服务器部署网站为何提示未备案?  Android中AutoCompleteTextView自动提示  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  如何在不使用负向后查找的情况下匹配特定条件前的换行符  如何在建站宝盒中设置产品搜索功能?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Bootstrap CSS布局之列表  敲碗10年!Mac系列传将迎来「触控与联网」双革新  bing浏览器学术搜索入口_bing学术文献检索地址  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  在线教育网站制作平台,山西立德教育官网?  javascript读取文本节点方法小结  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在万网自助建站平台快速创建网站?  如何在服务器上三步完成建站并提升流量?  如何选择可靠的免备案建站服务器?  浅谈redis在项目中的应用  如何在香港免费服务器上快速搭建网站?  简历在线制作网站免费版,如何创建个人简历?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  PythonWeb开发入门教程_Flask快速构建Web应用  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  高端云建站费用究竟需要多少预算?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  网页制作模板网站推荐,网页设计海报之类的素材哪里好?