SuperAPI AI 工具集

react-view-transitions

前端与建站

查看项目

更新于 10-16 03:47

技能介绍

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

主要能力:<ViewTransition> 组件自动分配唯一 view-transition-name 并在后台调用 startViewTransition,无需手动调用。触发类型包括 enter、exit、update、share。支持 default、enter、exit、share 等属性,取值可为 auto、none、自定义类名或按类型映射的对象。通过 addTransitionType 标记过渡类型,可按上下文选择不同动画,可多次调用叠加类型。支持共享元素 morph、列表身份、布局位移、Suspense 揭示、路由切换等模式。

使用方式:Next.js App Router 已内置 React canary,无需安装 react@canary;非 Next.js 需安装 react@canary react-dom@canary。注意 <ViewTransition> 必须出现在任何 DOM 节点之前才能激活 enter/exit。建议按共享元素、Suspense 揭示、列表身份、状态变化、路由变化的顺序实现适用模式。方向性滑动仅用于层级导航与有序序列,横向导航不应使用。

适用场景:列表到详情、标签切换、数据加载揭示、列表重排、页面级路由过渡等。

限制:浏览器支持为 Chromium 125+、Firefox 144+、Safari 18.2+。router.back() 与浏览器前进后退不携带过渡类型,类型化动画会回退到默认值。同一名称的 VT 同时只能挂载一个。父 VT 整体挂载/卸载时嵌套 VT 不触发自身 enter/exit。需为减少动态效果添加对应 CSS。具体实现步骤、CSS 配方与排错细节见其参考文件。