跳到主要内容
界面图谱Interface Atlas
☰
EN
动效Motion / Navigation

视图过渡

View Transition

别名:视图过渡页面过渡动画切换动画换页过渡view transitionview transitions api

这是什么

用浏览器原生 View Transitions API 在页面状态切换时做平滑过渡:旧视图淡出、新视图淡入,关键元素可共享形变。它把状态跳变藏进连续的空间叙事,让"换了一屏"读起来像"移了一步",而不是硬切。

交互实验室

试一试,再决定怎么用

正在加载演示…

✓ 适用场景

  • 同文档内状态或路由切换需要连续感(列表↔详情)
  • 存在应保持视觉连续的关键元素(标题、图片、按钮)
  • 目标浏览器已支持 View Transitions API

✕ 不适用场景

  • 每次切换都播长动画,高频导航会被拖慢
  • 旧新视图结构差异过大,形变会扭曲内容
  • 需要兼容无 API 环境且不愿做回退分支

常见形式

交叉淡入

Cross-fade

旧淡出新淡入,最稳妥的默认

滑动

Slide

沿导航方向推入推出,前进后退语义清晰

共享轴

Shared-axis

共同元素原地形变,其余沿轴移动

实现要点

@keyframesopacitytransform: translateview-transition-name

原生路径用 document.startViewTransition(() => updateDOM()),为需形变的元素指定 view-transition-name。无 API 时用 CSS animation 兜底:旧视图 fade/slide 出、新视图入, 时长一律 calc(<时长> * var(--demo-speed, 1))。尊重 prefers-reduced-motion,退化为瞬时切换。

平台 API

document.startViewTransition()view-transition-name

交给 AI

四层 Prompt 从「它是什么」一路写到「可直接执行的任务」;切到 Agent 任务层,还能叠加视觉风格与附加要求,再一键复制给你的 Coding Agent。

在当前项目中实现视图过渡。

先检查现有组件体系和 Design Token,优先复用当前组件。
保持现有项目视觉风格。不要新增不必要依赖。
要求:
- 状态或路由切换有连续过渡,关键元素保持视觉连续
- 无 View Transitions API 时有 CSS 兜底
- 所有动画时长写 calc(<时长> * var(--demo-speed, 1))
- 尊重 prefers-reduced-motion
完成后运行项目现有检查,并列出修改的文件。

附加要求:
- 支持深色模式
- 尊重 prefers-reduced-motion
- 不新增依赖
- 完成后运行现有检查并列出修改文件

可直接交给 Coding Agent,可叠加风格与附加要求

相关概念

参考来源

Markdown 版(给 Agent) · JSON