web animation API 锋利的css动画控制器 (更新中)

什么是web animation api 以及为什么要使用web animation api?

web animation API 是web页面中控制DOM元素动画效果的javascript原生API。

  1. 它能够逐个关键帧控制动画效果,
  2. 具有Timeline 机制‌能通过javascript来实现动画的暂停,播放,回溯等功能
  3. 能够通过javascript的事件监听动画的播放与完成,对动画的控制具有极高的细粒度。
  4. 另外它共用css animation的渲染引擎,所以具有极高的性能。

如何使用

基本使用方式

最直观的使用方式是

javascript 复制代码
const myAnimation = document.getElementById('id').animate(AnimationEffect,Options)

直接调用某个dom元素的animate函数,其中

  1. AnimationEffect 即keyframes object,等同于在css中使用 @keyframes
  2. Options里面是当前effect的配置项,常用配置项主要有:duration 动画播放时长, delay 时间延迟多久开始播, easing: 动画缓解曲线, iterations 播放次数
css 复制代码
#alice {
  animation: aliceTumbling infinite 3s linear;
}

@keyframes aliceTumbling {
  0% {
    color: #000;
    transform: rotate(0) translate3D(-50%, -50%, 0);
  }
  30% {
    color: #431236;
  }
  100% {
    color: #000;
    transform: rotate(360deg) translate3D(-50%, -50%, 0);
  }
}

以上css我们可以使用如下js进行覆盖

javascript 复制代码
const myAnimation = document.getElementById("alice").animate(
  [
    { transform: "rotate(0) translate3D(-50%, -50%, 0)", color: "#000" },
    { color: "#431236", offset: 0.3 },
    { transform: "rotate(360deg) translate3D(-50%, -50%, 0)", color: "#000" },
  ],
  {
    duration: 3000,
    iterations: Infinity,
  },
);

myAnimation.pause()

如果是通过上述方式实现(即 element.animate(...)) 会立马执行animation若想随后执行需要调用pause: myAnimation.pause() 然后在需要调用的时机执行: myAnimation.play()

Group Animation

待续

最佳实践

待续

相关推荐
Mr.Jessy1 小时前
JavaScript高级:构造函数与原型
开发语言·前端·javascript·学习·ecmascript
白兰地空瓶3 小时前
🚀你以为你在写 React?其实你在“搭一套前端操作系统”
前端·react.js
爱上妖精的尾巴3 小时前
6-4 WPS JS宏 不重复随机取值应用
开发语言·前端·javascript
似水流年QC4 小时前
深入探索 WebHID:Web 标准下的硬件交互实现
前端·交互·webhid
陪我去看海4 小时前
测试 mcp
前端
C+++Python5 小时前
如何使用CSS Grid?
css
speedoooo5 小时前
在现有App里嵌入一个AI协作者
前端·ui·小程序·前端框架·web app
全栈胖叔叔-瓜州5 小时前
关于llamasharp 大模型多轮对话,模型对话无法终止,或者输出角色标识User:,或者System等角色标识问题。
前端·人工智能
三七吃山漆5 小时前
攻防世界——wife_wife
前端·javascript·web安全·网络安全·ctf
用户47949283569155 小时前
面试官问"try-catch影响性能吗",我用数据打脸
前端·javascript·面试