View Transitions API 页面过渡实践概述通过 `document.startViewTransition` 实现页面级动画过渡,减少突兀的切换体验;适用于 SPA 与多路由场景。基本用法export function navigateWithTransition(update: () => void) {
if ('startViewTransition' in document) {
// @ts-ignore
(document as any).startViewTransition(() => update())
} else {
update()
}
}
路由协作// 假设使用自定义路由或框架钩子
router.on('navigate', (to) => {
navigateWithTransition(() => router.push(to))
})
过渡样式::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 250ms;
animation-timing-function: ease-in-out;
}
/* 栅格/模块过渡示例 */
::view-transition-old(card),
::view-transition-new(card) {
animation-duration: 300ms;
}
性能与可访问性为动画元素设置占位,避免布局抖动;控制时长与缓动,不影响可读性。提供“减少动态效果”选项,尊重 `prefers-reduced-motion`。技术参数与验证Chrome 120+ 原生支持;其他浏览器降级到即时切换。INP 保持 < 200ms;过渡时长 200-300ms 为宜。应用场景列表到详情过渡、仪表盘面板切换、模态与抽屉动画。注意事项谨慎为大量元素添加过渡标签,避免重绘开销。动画与路由状态需一致,避免交互错位。常见问题Q: 与 CSS 动画/GSAP 冲突吗?A: 可共存;页面级过渡交给 View Transitions,局部交互由 CSS/GSAP 负责。参考资料View Transitions API 文档;无障碍与性能最佳实践。---发布信息:已发布 · 技术验证 · 阅读 34 分钟 · CC BY-SA 4.0

发表评论 取消回复