scroll-timeline 目前不可用于生产环境的跨浏览器层叠滑动,因仅 Chrome/Edge 115+ 支持,Firefox/Safari 完全不支持且无 fallback;其无法动态控制 z-index、在 overflow: hidden 下静默失效、依赖可滚动源容器,而层叠布局常破坏该条件;移动端尤其 iOS Safari 和微信 WebView 零支持;真正可行方案是轻量 JS 监听滚动,用 CSS 变量驱动 transform、z-index 等多属性耦合动画,兼顾兼容性与精确控制。

纯 CSS 实现响应式层叠卡片滑动效果,scroll-timeline 是可行路径,但目前(2026年4月)**不能直接用于生产环境的跨浏览器层叠滑动**——它仅在 Chrome 115+ 和 Edge 115+ 中稳定支持,Firefox 和 Safari 完全不支持,且无法 fallback 到传统滚动动画逻辑。
scroll-timeline 在层叠卡片中根本跑不起来
你写好 @scroll-timeline card-slide { source: auto; orientation: vertical; start: 0%; end: 100%; },再配 animation: slide-in 1s linear forwards; 和 animation-timeline: card-slide;,看起来很美。但实际会遇到:
- 层叠卡片通常靠
position: absolute+z-index或transform: translateZ()构建深度,而scroll-timeline驱动的动画只能作用于单个元素的属性(如opacity、transform),无法动态控制多个卡片之间的相对z-index或堆叠偏移量 - 当卡片容器设了
overflow: hidden(常见于滑动视口),Chrome 会静默禁用scroll-timeline,控制台无报错,动画直接不触发 -
scroll-timeline的source必须是可滚动的祖先容器,但层叠布局常依赖position: relative容器 + 绝对定位子项,这类容器默认不可滚动,强行加overflow-y: scroll会破坏层叠视觉流
移动端层叠滑动必须放弃 scroll-timeline
iOS Safari 和 Android WebView(尤其微信内核)对 scroll-timeline 零支持,连 @supports (animation-timeline: name) 查询都返回 false。更关键的是:层叠卡片滑动本质是“滚动位置 → 卡片位移/缩放/透明度 → 层级重排”的链式反应,而 scroll-timeline 只能做第一环映射,后两环仍需 JS 驱动或大量冗余 CSS 变量模拟。
- 想让第3张卡在滚动到 60% 时升到最上层?
z-index无法用 CSS 变量绑定滚动进度,必须 JS 动态设style.zIndex - 想实现卡片随滚动“逐张浮起+微旋转”,需要同时控制
transform: translateY() scale() rotate()和z-index,scroll-timeline无法协调多属性非线性变化 - 用
scroll-snap-type+scroll-snap-align做分页式滑动?它只控制停靠点,不解决层叠深度和过渡动画的同步问题
真正可用的响应式层叠滑动方案
放弃 scroll-timeline,改用轻量 JS 监听 scroll 或 touchmove,配合 CSS 自定义属性驱动动画,兼容性与可控性立竿见影:
- 给容器加
data-scroll-target,每张卡片设data-card-index="0",JS 根据scrollTop计算当前主卡索引,批量更新--active-index等 CSS 变量 - 所有卡片共用一套 transform 动画规则:
transform: translateY(calc(var(--offset, 0px) * (var(--index) - var(--active-index)))) scale(calc(1 - abs(var(--index) - var(--active-index)) * 0.08)); - 层级用
z-index: calc(100 - abs(var(--index) - var(--active-index)) * 10);控制,数值越大越靠前 - 为防 iOS 滚动卡顿,监听用
passive: true,动画更新塞进requestAnimationFrame,避免 layout thrashing
真正难的不是写动效,而是让每张卡片的位移、缩放、层级、阴影强度全部随滚动位置严格耦合——这层耦合关系,CSS 还没能力声明式表达。别被新特性名字带偏,先确保 Safari 和微信里能滑得顺、叠得稳,再谈 timeline。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











