0

0

CSS动画实现网页视差背景_多层背景图的不同速度位移

P粉602998670

P粉602998670

发布时间:2026-02-28 14:28:03

|

255人浏览过

|

来源于php中文网

原创

纯css视差核心是transform: translatez()触发3d上下文,配合perspective与preserve-3d实现景深差异;ios safari不支持background-attachment: fixed,需改用position: absolute多层容器或轻量js+防抖更新transform。

css动画实现网页视差背景_多层背景图的不同速度位移

transform: translateZ() 触发 3D 上下文是关键

纯 CSS 实现视差,核心不是“滚动监听”,而是利用 transform: translateZ() 让不同层在 3D 空间中处于不同景深,再配合 transform: translateX/Y() 的相对位移差异来模拟速度差。浏览器会自动根据 Z 轴位置缩放和偏移元素(需父容器设 transform-style: preserve-3dperspective)。

常见错误是只加 translateY 并试图用 scroll-behavior 或 JS 控制——那只是动画,不是视差;真视差必须有 Z 轴参与。

  • 父容器必须设 perspective: 1px(值越小,视差越强;但太小会导致元素缩得太小)
  • 每层背景需设 transform-style: preserve-3d(通常放在滚动容器上)
  • 各层用 transform: translateZ(-1px) translateY(0) 这类组合,Z 值为负且互不相同(如 -1px、-2px、-4px)
  • 背景图必须用 background-attachment: fixed 或脱离文档流(否则滚动时会“拖拽”)

background-attachment: fixed 在 iOS Safari 上基本失效

iOS Safari(尤其 iOS 15+)对 background-attachment: fixed 支持极差,即使开启硬件加速也常回退为 scroll,导致视差完全不生效。这不是 bug,是 Safari 主动禁用该属性以保滚动性能。

绕过方式只有两个:一是改用 position: sticky + 多层绝对定位容器;二是用轻量 JS 监听 scroll 并更新 transform ——但后者要防抖、节流、用 passive: true,否则卡顿明显。

立即学习前端免费学习笔记(深入)”;

摩笔天书
摩笔天书

摩笔天书AI绘本创作平台

下载
  • 纯 CSS 方案在 iOS 上建议放弃 fixed,改用多层 position: absolute 容器 + top: 0 + width/height: 100%
  • 若用 JS,只更新 style.transform,别触发布局(避免读取 offsetTop 等)
  • 务必加 will-change: transform 到每一层,提示浏览器提前 GPU 加速

层级顺序和 z-index 容易反直觉

视差层的视觉前后关系,不完全由 z-index 决定,更取决于 3D 空间中的 Z 坐标:Z 值越负(如 -4px),离用户越远,看起来越“靠后”,移动也越慢;Z 值越接近 0(如 -0.5px),越“靠前”,移动越快。但 DOM 渲染顺序仍受 z-index 影响,二者冲突就会穿帮。

典型穿帮现象:远处山峦盖住了近处树木——其实是 DOM 中山峦元素写在了树木前面,又没设足够高的 z-index 补偿。

  • 确保 DOM 顺序从远到近排列(最远层最先写)
  • 给每层设明确 z-index,且与 Z 轴逻辑一致(如 translateZ(-4px) 对应 z-index: 1translateZ(-1px) 对应 z-index: 3
  • 所有层必须同级(不能嵌套),否则 preserve-3d 不生效

滚动容器必须设 overflow-y: scroll 且有明确高度

视差效果依赖滚动事件或 3D 透视投影,如果滚动容器是 body,在多数现代浏览器里会被优化掉部分渲染行为(比如 Chrome 对 body 滚动的合成层处理很激进),导致位移卡顿或错位。

更稳定的做法是把视差限制在一个有明确 heightoverflow-y: scrolldiv 内,并设 scroll-behavior: smooth(可选)。

  • 不要用 htmlbody 作为滚动容器(iOS 尤其敏感)
  • 容器高度不能是 min-height 或依赖内容撑开,必须是固定值或 100vh
  • 若需全屏视差,用 height: 100vh + overflow-y: scroll,并确保内部内容高度 > 100vh
实际效果是否自然,取决于 Z 值差的尺度感和滚动灵敏度匹配——调参比写代码花的时间多得多,而且每次换设备都得微调。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1003

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

810

2023.11.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

528

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

494

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

638

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5831

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

492

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

218

2023.09.04

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

0

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 37.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号