274 字
1 分钟
用 View Transitions API 给页面切换加动画
给客户的后台加页面切换动画,以前要么上 framer-motion,要么手写 opacity 加 transform。这次直接用 View Transitions API,零依赖,旧浏览器优雅降级成瞬间切换,没有任何报错。
多页应用的用法
Chrome 126 起支持跨文档过渡,只要一行 CSS:
@view-transition { navigation: auto;}列表页和详情页各自声明过渡名:
.item-image { view-transition-name: item-image;}浏览器会自动截图新旧状态做交叉淡入淡出。想定制动画,覆盖两个伪元素:
::view-transition-old(item-image),::view-transition-new(item-image) { animation-duration: 0.25s;}单页应用
SPA 里在改 DOM 前包一层:
document.startViewTransition(() => updateListUI());浏览器对函数执行前后各截一帧,中间的过程自动补间。
几个坑
view-transition-name必须全页唯一,列表里循环渲染的元素不能共用一个名字,否则动画直接失效- 页面根元素默认有一个
root过渡名,不想要整页淡入淡出就把它禁掉 - Firefox 和 Safari 的跨文档过渡支持滞后,做好渐进增强的预期,别把核心交互押在动画上
用 View Transitions API 给页面切换加动画
https://oliver6868686.tech/posts/view-transitions/