恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Web Animation API

  • 首页
  • 资讯中心
  • /
  • Web Animation API

相关资讯

agent-skills实战:从单体Prompt到智能体技能模块化设计 2026/10/14 9:38:32
AnyPS5:游戏主机多功能启动器与工具整合方案解析 2026/10/14 9:38:32
SpringBoot+Vue全栈电子产品销售系统开发实践 2026/10/14 9:33:31

最新资讯

弹性布局深度复盘:从主轴交叉轴模型到flex简写与对齐实战
Skills工程化:让AI Agent从能聊到能干的可靠工作流实践
创业跃迁中的认知重构与系统升级
从机械自动化到AI大神:收藏这份“AI+智能制造“进阶指南,小白也能轻松上手!
Windows搭建FTP+Nginx反向代理,浏览器IP直接访问文件
Python学生成绩管理系统课程设计实战:SQLite+Tkinter全流程实现

今日推荐

IBM Verify Identity Access 修复 22 个漏洞:两个 9.8 严重 RCE 无需认证
小区物业管理系统
小型超市仓库管理系统

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Web Animation API

发布时间:2026/10/14 9:38:32
Web Animation API 7.2 Web Animations APIWeb Animations API简称 WAAPI是 W3C 标准化的原生 JavaScript 动画接口它将 CSS 动画、SVG 动画的底层能力统一暴露给 JavaScript既保留了 CSS 动画的 GPU 加速、合成线程渲染的性能优势又具备 JavaScript 的动态性与可控性。它弥补了 CSS 动画难以动态传参、无法实时控制播放流程的不足是复杂交互动画、动态业务动效的标准实现方案。7.2.1 element.animate() 基础用法element.animate()是 WAAPI 的核心入口方法用于在 DOM 元素上快速创建并播放动画直接传入关键帧与配置参数即可生成动画实例无需预定义 CSS 规则。一、核心语法const animation element.animate(keyframes, options);参数1keyframes动画关键帧集合定义动画各阶段的样式状态参数2options动画配置参数控制时长、次数、缓动等全局行为返回值Animation实例对象用于后续的播放控制与状态监听二、关键帧的两种写法1. 数组形式多帧完整写法数组中每个对象对应一个关键帧浏览器自动均匀分配帧的时间位置适合 2 帧以上的复杂动画。const keyframes [ { opacity: 0, transform: translateY(30px) }, // 起始帧0% { opacity: 1, transform: translateY(0) } // 结束帧100% ];也支持通过offset属性手动指定帧的百分比位置const keyframes [ { opacity: 0, offset: 0 }, { opacity: 0.5, offset: 0.3 }, { opacity: 1, offset: 1 } ];2. 对象形式两帧简写仅需起始与结束两个状态时可直接传入对象浏览器自动解析为两帧动画写法更简洁。const keyframes { opacity: [0, 1], transform: [translateY(30px), translateY(0)] };三、核心配置选项options为动画全局配置完整对应 CSS 动画的能力同时支持更精细的时序控制。配置项类型说明对应 CSS 属性durationnumber单次动画时长单位毫秒animation-durationdelaynumber动画延迟播放时间单位毫秒animation-delayeasingstring动画缓动函数animation-timing-functioniterationsnumber播放次数Infinity为无限循环animation-iteration-countdirectionstring播放方向normal/reverse/alternateanimation-directionfillstring填充模式none/forwards/backwards/bothanimation-fill-modeendDelaynumber动画结束后的延迟时间单位毫秒无对应 CSS 属性四、基础示例const box document.querySelector(.box); // 创建并播放淡入上移动画 const fadeInAnim box.animate( [ { opacity: 0, transform: translateY(20px) }, { opacity: 1, transform: translateY(0) } ], { duration: 500, easing: ease-out, fill: forwards } );7.2.2 动画控制暂停、恢复、取消、反转animate()返回的Animation实例提供了完整的播放控制方法支持对动画进行实时的暂停、恢复、跳转、反转等操作这是 WAAPI 相比 CSS 动画最核心的优势。一、核心控制方法方法作用说明play()播放动画从当前暂停位置继续播放或从头开始播放已取消的动画pause()暂停动画冻结在当前帧保留当前播放进度cancel()取消动画终止动画并重置到初始状态元素样式恢复到动画前reverse()反转播放从当前位置反向播放播放方向翻转finish()结束动画直接跳转到动画结束状态触发finish事件二、播放状态属性通过animation.playState可实时读取动画的当前状态返回枚举值running正在播放paused已暂停finished已完成idle空闲未播放三、控制示例const anim box.animate([/* 关键帧 */], { duration: 1000 }); // 暂停播放 document.querySelector(#pauseBtn).addEventListener(click, () { anim.pause(); console.log(anim.playState); // paused }); // 恢复播放 document.querySelector(#playBtn).addEventListener(click, () { anim.play(); }); // 反转播放 document.querySelector(#reverseBtn).addEventListener(click, () { anim.reverse(); }); // 取消动画 document.querySelector(#cancelBtn).addEventListener(click, () { anim.cancel(); });四、finish 与 cancel 的核心区别finish()直接跳到动画结束帧保留动画结束后的样式受 fill 影响触发finish事件属于正常结束。cancel()直接终止动画元素样式恢复到动画开始前的状态触发cancel事件属于强制中断。7.2.3 动画时序与缓动控制WAAPI 提供了比 CSS 动画更精细的时序控制能力与更灵活的缓动配置支持精准到毫秒的进度跳转、单帧独立缓动等高级能力。一、精准时序控制1. 当前时间读写通过animation.currentTime可以直接读取或设置动画的当前播放时间单位毫秒实现任意进度跳转、进度拖拽等交互这是 CSS 动画无法实现的能力。// 获取当前播放进度时间 console.log(anim.currentTime); // 250 // 直接跳转到 500ms 位置 anim.currentTime 500;2. 首尾延迟控制除了常规的开始延迟delay还支持endDelay结束延迟在动画结束后、触发完成事件前插入等待时间用于多动画序列的时间对齐。element.animate(keyframes, { duration: 300, delay: 100, // 开始前延迟100ms endDelay: 200 // 结束后延迟200ms再触发完成事件 });3. 迭代起始点通过iterationStart可以设置动画从第几次迭代的什么位置开始播放支持非整数次迭代适合中途入场的循环动画。// 无限循环动画从第2.5次迭代开始播放 element.animate(keyframes, { iterations: Infinity, iterationStart: 2.5 });二、缓动控制1. 全局缓动在 options 中配置easing作用于整个动画的所有关键帧之间与 CSS 缓动完全兼容。{ easing: cubic-bezier(0.4, 0, 0.2, 1) // 自定义贝塞尔曲线 }支持所有 CSS 缓动关键字linear、ease、ease-in、ease-out、ease-in-out以及steps()阶跃函数。2. 单帧独立缓动WAAPI 支持给单个关键帧设置easing缓动作用于当前帧到下一帧之间实现同一段动画中不同阶段不同的运动曲线灵活性远超 CSS 动画。const keyframes [ { transform: translateX(0), easing: ease-in }, // 0%-50% 加速 { transform: translateX(100px), easing: ease-out }, // 50%-100% 减速 { transform: translateX(200px) } ];三、动画事件WAAPI 提供 Promise 化的事件与传统事件两种方式监听动画生命周期节点// Promise 方式动画完成回调 anim.finished.then(() { console.log(动画播放完成); }); // 传统事件方式 anim.addEventListener(finish, () { console.log(动画结束); }); anim.addEventListener(cancel, () { console.log(动画被取消); });四、适用场景需要动态控制播放、暂停、进度的交互动画参数动态计算的业务动效如根据数据决定动画幅度多动画序列编排、精准时间对齐的复杂动效无法通过 CSS 类切换实现的动态生成动画

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号