View Transitions API 实战:丝滑的页面过渡
无需引入动画库,用原生 View Transitions API 实现 SPA 与 MPA 的页面切换动画,附关键 API 与踩坑。
页面切换是用户体验的关键一环。过去实现页面过渡动画往往需要复杂的框架支持,如今 View Transitions API 把它变成了几行原生代码。
它解决了什么
View Transitions API 让浏览器自动捕捉切换前后的状态快照,并在两者之间做平滑过渡。你只需声明「我要过渡」,浏览器负责截图、合成与动画。
最简用法
对 SPA,调用一个 API 即可:
document.startViewTransition(() => {
updateDOM(); // 更新内容的函数
});
浏览器会冻结旧状态、执行更新、再平滑过渡到新状态。
跨页面(MPA)过渡
配合 CSS 与 @view-transition 规则,甚至能在整页跳转时保持过渡:
@view-transition {
navigation: auto;
}
这样传统多页应用也能获得丝滑的页面切换动画。
自定义动画
你可以用 ::view-transition-old 与 ::view-transition-new 伪元素自定义过渡:
::view-transition-old(root) {
animation: fade-out 0.3s ease;
}
::view-transition-new(root) {
animation: fade-in 0.3s ease;
}
注意事项
- 动画期间不要修改被捕获的元素,否则可能闪烁;
- 注意
prefers-reduced-motion,为偏好减少动效的用户关闭动画; - 复杂布局的过渡可能出现跳变,需针对关键元素指定过渡。
结语
View Transitions API 把「页面过渡动画」从框架专属能力变成了平台能力。随着浏览器支持度提升,它正成为现代前端体验的标准件。