当前位置: 首页 > 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.jsqmd.com/news/895628/

相关文章:

  • Flutter状态管理GetX详解:轻量级解决方案
  • 2026年Vibe Coding实战指南:141+工具生态与高效开发工作流
  • G4-MeroMero-31B vs 原版Gemma4:创意任务性能对比分析
  • C语言函数返回值类型隐式转换问题解析
  • 数据中心碳减排:CEO-DC框架与AI加速器优化策略
  • Cat-Catch智能资源嗅探实战:构建高效网页媒体下载工作流
  • 【Word提效 No.024】一句话搞定批量替换特殊字符
  • 15分钟掌握微信聊天记录导出:永久保存珍贵对话的完整方案
  • 湖北建筑工程资质代办服务商甄选:核心标准与实例参考 - 奔跑123
  • QKeyMapper终极指南:免费开源Windows按键映射工具,游戏办公全能助手
  • C51编译器公共代码块优化与volatile函数控制
  • Windows音频终极神器:Equalizer APO系统级均衡器完全指南
  • Revelation光影包:为Minecraft Java版带来物理渲染的视觉革命
  • 炉石传说玩家的终极魔法工具箱:HsMod如何让游戏体验飞升8倍
  • 基于本地大语言模型的隐私优先健康AI助手:架构设计与实现
  • Harrier-OSS-v1-0.6B的32K上下文长度:处理长文档的文本嵌入最佳实践
  • XMC4000看门狗复位后程序停止问题解析与解决方案
  • OpenClaw数据采集实战:从技术原理到商业变现的完整指南
  • 手把手教你用Verilog/SystemVerilog搭建一个可配置的8x8脉动阵列(附完整测试平台)
  • 凤城市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY
  • 友华S905L3B盒子刷机后必做的5个优化设置,让你的电视盒子快如新机
  • VMware Workstation Pro 17免费激活终极指南:5分钟获取永久许可证密钥
  • 【信息科学与工程学】计算机科学与自动化——第四十四篇 路由器04 路由器TCAM芯片(1)
  • 嵌入式学习之路->stm32篇-->(9)I2C通讯(下)
  • 抖音无水印视频下载终极指南:如何免费批量保存高清内容
  • 别再手动算归一化了!Origin 9.1 内置函数与脚本全解析,效率提升200%
  • VMware Horizon Client死活装不上?先别重装系统,试试从这3个系统级依赖入手
  • 从MOS管到寄存器:一张图看懂STM32 GPIO硬件电路,理解八种工作模式的本质
  • 求职策略深度复盘:从海投到精准匹配的实战心法
  • 安达市黄金回收 白银回收 铂金回收 彩金回收全攻略:五家靠谱门店横向评测,附避坑要点 - 前途无量YY