如何实现滚动时逐个文字渐隐效果
技术百科
碧海醫心
发布时间:2026-01-01
浏览: 次 本文介绍使用 jquery 实现页面滚动时,多个同名类元素(如 `.text`)按顺序、独立地渐隐(fade out),避免所有文本同步消失的常见问题。核心在于为每个元素设置差异化滚动阈值与透明度计算逻辑。
在网页滚动动画中,若对所有 .text 元素统一应用 scrollTop() 计算透明度(如 1 - scrollTop / 250),会导致它们完全同步淡出——因为所有元素共享同一计算公式,一旦滚动距离超过临界点, opacity 就同时趋近于 0。要实现“逐行/逐段自然消隐”的视觉效果,关键是对每个元素独立建模其可见性逻辑。
✅ 正确实现思路:基于索引的差异化衰减
通过 .each() 遍历每个 .text 元素,并利用 index 参数为每个元素引入偏移量和缩放因子:
$(document).ready(function() {
$(window).scroll(function() {
$('.text').each(function(index) {
const scrollTop = $(window).scrollTop();
// 每个元素延迟触发淡出:第0个从0px开始,第1个从5px开始,依此类推
if (scrollTop > index * 5) {
// 分母随索引增大而增大 → 后续元素淡出更“慢”,形成错落感
const opacity = 1 - scrollTop / ((index + 1) * 100);
$(this).css('opacity', Math.max(0, opacity)); // 防止负值
}
});
});
});? 说明: index * 5 作为起始触发偏移,确保上方元素先开始淡出; ((index + 1) * 100) 作为分母,使第 1 个元素在 scrollTop=100px 时 opacity=0,第 2 个则需 200px,以此类推,形成阶梯式淡出节奏; Math.max(0, opacity) 防止 opacity 为负数(CSS 中无效,但逻辑更健壮)。
? HTML 与 CSS 基础结构(供测试)
HELLOOOOOOOO
HELLOOOOOOOO
HELLOOOOOOOO
.text {
margin: 50px 0;
font-size: 2rem;
transition: opacity 0.1s ease-out; /* 添加轻微过渡,更平滑 */
}
body {
height: 10000px; /* 提供足够滚动空间 */
}⚠️ 注意事项与优化建议
-
性能考量:scroll 事件高频触
发,建议添加防抖(debounce)或使用 requestAnimationFrame 优化;生产环境推荐用 IntersectionObserver 替代 jQuery 滚动监听,更高效且原生支持。 -
响应式适配:固定像素偏移(如 index * 5)在不同屏幕下可能失准,可改用元素自身 offset().top 动态计算:
const elTop = $(this).offset().top; if (scrollTop > elTop - $(window).height() * 0.7) { const fadeRange = 200; // 淡出区间高度(px) const opacity = Math.max(0, 1 - Math.min(1, (scrollTop - (elTop - $(window).height() * 0.7)) / fadeRange)); $(this).css('opacity', opacity); } - 无障碍友好:纯视觉渐隐不影响语义结构,但若用于关键信息,请确保内容仍可通过键盘导航访问。
通过上述方法,你将获得层次分明、富有节奏感的滚动渐隐效果——不再是“一刀切”式消失,而是如卷轴缓缓收起般的自然体验。
# 多个
# 常见问题
# 差异化
# 你将
# css
# 以此类推
# win
# js
# html
# 事件
# 遍历
# 仍可
# cdn
# jquery
# ajax
# 依此类推
# math
# 画中
# 渐隐
# 防抖
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- c++ atoi和atof函数用法_c++字符数组
- 如何在 Go 中可靠地测试含 time.Time
- Win11怎么设置任务栏对齐方式_Windows1
- c++怎么编写动态链接库dll_c++ __dec
- Win11局域网共享怎么设置 Win11文件夹网络
- c++怎么处理多线程死锁_c++ lock_gua
- Win11怎么开启HDR模式_Windows 11
- Win11怎么关闭通知中心_Windows11系统
- PHP的FastAdmin架构适合二次开发吗_特点
- Windows 11无法安全删除U盘提示设备正在使
- Go 语言标准库为何不提供泛型 Contains
- phpstudy本地环境mysql忘记密码_重置m
- Avalonia如何实现跨窗口通信 Avaloni
- Win11如何关闭小娜Cortana Win11禁
- Win11怎么设置按流量计费_Win11限制后台流
- Win11怎么关闭自动更新 Win11永久关闭系统
- Win10如何更改网络连接_Windows10以太
- 如何解决Windows字体显示模糊的问题?(Cle
- php订单日志怎么导出excel_php导出订单日
- php订单日志权限怎么设_php订单日志文件权限设
- Go语言中正确反序列化多个同级XML元素为结构体切
- Win11关机快捷键是什么_Win11快速关机方法
- C#如何在一个XML文件中查找并替换文本内容
- Windows 10怎么隐藏特定更新补丁_Wind
- Win11触摸板没反应怎么办_开启Win11笔记本
- Win10系统怎么查看网络连接状态_Windows
- Windows10如何更改开机密码_Win10登录
- MAC如何快速搜索大文件_MAC磁盘空间分析与冗余
- 如何使用Golang实现Web表单数据绑定_自动映
- 如何在 Go 中创建包含映射(map)的切片(sl
- Django 测试数据库表缺失与字段未创建问题的完
- Win11怎么更改系统语言为中文_Windows1
- c# Task.ConfigureAwait(tr
- ACF 教程:正确更新嵌套在多层 Group 字段
- Python文件操作优化_大文件与流处理解析【教程
- c++如何打印函数堆栈信息_c++ backtra
- 如何使用Golang构建简易投票统计功能_Gola
- C++ STL算法库怎么用?C++常用算法函数(s
- VSC怎么创建PHP项目_从零开始搭建项目的步骤【
- mac怎么退出id_MAC退出iCloud账号与A
- Win11任务栏怎么固定应用 Win11将软件图标
- Win11任务栏天气怎么关闭 Win11隐藏天气小
- 如何使用Golang处理静态文件缓存_提高页面加载
- php485读数据时阻塞怎么办_php485非阻塞
- Windows 10自带杀毒软件在哪_Window
- 如何使用Golang进行HTTP服务性能测试_测量
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- php下载安装包太大怎么下载_分卷压缩下载方法【教
- c++中如何计算坐标系中两点间距离_c++勾股定理

发,建议添加防抖(debounce)或使用 requestAnimationFrame 优化;生产环境推荐用 IntersectionObserver 替代 jQuery 滚动监听,更高效且原生支持。
QQ客服