当前位置: 首页 > news >正文

CSS视图过渡(View Transitions)详解:创建平滑页面切换

CSS视图过渡(View Transitions)详解:创建平滑页面切换

一、什么是View Transitions

View Transitions API允许你在DOM变化时创建平滑的过渡动画。

1.1 基本用法

document.startViewTransition(() => { // DOM变化 document.body.classList.add('dark'); });

1.2 CSS配置

::view-transition { duration: 0.5s; easing: ease-in-out; } ::view-transition-old(root) { animation: fade-out 0.5s ease-in-out; } ::view-transition-new(root) { animation: fade-in 0.5s ease-in-out; } @keyframes fade-out { from { opacity: 1; } to { opacity: 0; } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

二、命名过渡

2.1 定义命名元素

<div class="avatar" style="view-transition-name: avatar"> <img src="avatar.jpg" alt="Avatar"> </div>

2.2 CSS样式

::view-transition-old(avatar) { animation: slide-left 0.5s ease-in-out; } ::view-transition-new(avatar) { animation: slide-right 0.5s ease-in-out; } @keyframes slide-left { from { transform: translateX(0); } to { transform: translateX(-100%); } } @keyframes slide-right { from { transform: translateX(100%); } to { transform: translateX(0); } }

三、实战应用

3.1 页面切换动画

// 导航时触发过渡 async function navigateTo(url) { await document.startViewTransition(async () => { // 加载新页面内容 const response = await fetch(url); const html = await response.text(); document.documentElement.innerHTML = html; }); }

3.2 列表项动画

::view-transition-old(list-item) { animation: shrink 0.3s ease-out; } ::view-transition-new(list-item) { animation: grow 0.3s ease-out; } @keyframes shrink { from { transform: scale(1); opacity: 1; } to { transform: scale(0); opacity: 0; } } @keyframes grow { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } }

3.3 模态框过渡

::view-transition-old(modal) { animation: modal-close 0.3s ease-out; } ::view-transition-new(modal) { animation: modal-open 0.3s ease-out; } @keyframes modal-open { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } }

四、自定义过渡

const transition = document.startViewTransition(() => { // DOM变化 }); transition.ready.then(() => { // 过渡开始前 }); transition.finished.then(() => { // 过渡完成后 });

五、浏览器兼容性

属性ChromeFirefoxSafariEdge
View Transitions

总结

View Transitions API提供了强大的页面过渡能力。通过合理使用,可以创建平滑的用户体验。

关键要点:

  1. startViewTransition():触发过渡
  2. ::view-transition-old:旧元素样式
  3. ::view-transition-new:新元素样式
  4. view-transition-name:命名过渡元素
  5. ready/finished:过渡生命周期

继续探索View Transitions的更多用法,创造精美的页面切换效果。

http://www.zskr.cn/news/1400737.html

相关文章:

  • Apifox实战:用Pre-request Script为你的接口测试自动续上‘登录态’
  • gte-micro-openmind社区贡献指南:如何参与模型改进和开发
  • 数据中心碳减排:CEO-DC框架与AI加速器优化策略
  • 如何突破Windows权限限制:RunAsTI终极权限提升工具使用指南
  • 15分钟掌握微信聊天记录导出:永久保存珍贵对话的完整方案
  • 湖北建筑工程资质代办服务商甄选:核心标准与实例参考 - 奔跑123
  • 基于本地大语言模型的隐私优先健康AI助手:架构设计与实现
  • Revelation光影包:为Minecraft Java版带来物理渲染的视觉革命
  • DS4Windows:终极游戏手柄兼容解决方案,让PS4/PS5手柄在PC上完美工作
  • 给技术美术的Niagara入门:对比Cascade,解锁自定义粒子模块的正确姿势
  • Windows Defender Remover深度解析:系统安全组件管理工具的技术原理与实践指南
  • 凤城市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 从 GPT-5 到 Claude 4:API 迁移实战指南
  • 零编程文本分析神器:KH Coder完整入门指南
  • 求职策略深度复盘:从海投到精准匹配的实战心法
  • 佛山市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 一文看懂GritLM-7B-KTO架构:隐藏在4096维度背后的技术创新 [特殊字符]
  • EhViewer终极指南:简单三步掌握这款免费Android漫画应用[特殊字符]
  • 深入理解 SAP Application Jobs 中的 job chain 重启机制
  • COM3D2.MaidFiddler:终极COM3D2实时编辑器,5分钟快速定制你的女仆角色!
  • Android微信双开终极指南:如何通过WeChatPad实现真正的平板模式登录
  • 安国市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 如何轻松获取八大网盘直链下载地址:LinkSwift完全指南
  • 福鼎市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 都江堰市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • AI对话防丢失:从IndexedDB到服务端同步的完整解决方案
  • 逆向小技巧:如何用EnigmaVBUnpacker拆解别人打包的单文件程序?
  • 安康市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 敦化市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 友华MT5001-A2刷机后必做的5项优化:从三网通到应用隐藏,让你的电视盒子脱胎换骨