SuperAPI AI 工具集

vercel-react-view-transitions

前端与建站

查看项目

更新于 10-15 23:44

技能介绍

用途:指导在 React 中基于浏览器原生 document.startViewTransition 实现界面状态间的动画。用 <ViewTransition> 声明动画对象,用 startTransition、useDeferredValue 或 Suspense 触发,用 CSS 类控制动画方式;不支持的浏览器会优雅跳过动画。

主要能力:<ViewTransition> 组件自动分配 view-transition-name 并在底层调用 startViewTransition,无需手动调用。触发类型包括 enter、exit、update、share。支持共享元素(同名 VT 在卸载与挂载间形成形变)、列表身份、状态进出、路由切换、Suspense 揭示等模式。可用 addTransitionType 为过渡打标签,并按类型映射不同 CSS 类,enter 与 exit 可不对称。

使用方式:Next.js 的 App Router 已内置 React canary,无需安装 react@canary;非 Next.js 需安装 react@canary react-dom@canary。建议大量使用 default="none",只显式开启需要的触发。CSS 伪元素包括 ::view-transition-old/new/group/image-pair。实现时按 references/implementation.md 的审计步骤进行,并复制 references/css-recipes.md 的 CSS,不要自行编写动画 CSS。

适用场景:层级导航(列表到详情)用类型键控的方向滑动;横向导航用淡入或 default="none";Suspense 揭示用字符串属性;后台刷新用 default="none"。

限制:router.back() 与浏览器前进后退按钮不触发视图过渡,应改用 router.push()。同一名称的 VT 同时只能挂载一个。父 VT 退出时嵌套 VT 不触发自身 enter/exit。类型在导航期间可用,后续 Suspense 揭示不可用。浏览器支持 Chromium 111+、Firefox 144+、Safari 18.2+。需始终加入减少动态效果的 CSS。其余细节暂未提供。