Web Animation API

工作中经常会遇到需要动画的场景,连贯动画都是用CSS实现,,但是如果遇到需要用户互动介入的动画,那纯CSS很比较吃力,也不是不能实现,需要动态修改CSS变量,而且动画容易JS代码阻塞导致动画卡顿,不连贯,还好,web api推出了**animation动画解决方案**,并且不会触发回流,也就是不会被阻塞,不在主线程执行,利用渲染线程处理。

先简单的写一个页面,一个背景,一个小球
在这里插入图片描述
接下来,点击页面,小球会移动到点击的地方

 let box = document.getElementById('box') // 小球
 let container = document.getElementById('container') // 画布

 container.onclick = function (event) {
   
   let x_ = event.pageX // 记录小球的结束位置x
   let y_ = event.pageY // 记录小球的结束位置y
   // 记录小球的起始位置
   let {
    x,y } = box.getBoundingClientRect()
   // 触发动画
   box.animate(
     [
       {
   
         transform: `translate(${
     x}px, ${
     y}px)`,
         offset: 0 // 执行的阶段 0%
       },
       {
   
         transform: `translate(${
     x_}px, ${
     y_}px)`,
         offset: 1 // 执行的阶段 100%
       }
     ],
     {
   
       duration: 800, // 动画执行时长
       fill: "forwards" // 动画执行完的状态
     }
   )
 }

我们说说他这个API怎么用,animate 动画,接收2个参数,一个动画改变的关键帧,另外一个对象,接收动画执行的参数
animate([], {})
,可以看下最终实现的效果:

在这里插入图片描述

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 10:24:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 10:24:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 10:24:02       87 阅读
  4. Python语言-面向对象

    2024-01-17 10:24:02       96 阅读

热门阅读

  1. GitHub 异常 - 无法连接22端口 Connection timed out

    2024-01-17 10:24:02       41 阅读
  2. Python爬虫---scrapy框架---下载嵌套数据

    2024-01-17 10:24:02       42 阅读
  3. 基于冯·诺依曼架构能否实现有主动思想的AI

    2024-01-17 10:24:02       56 阅读
  4. [HarmonyOS]主题课:使用DevEco Studio高效开发

    2024-01-17 10:24:02       51 阅读
  5. CMAKE学习

    2024-01-17 10:24:02       59 阅读
  6. 入门级的 DataV 教程,适用于 Vue 2

    2024-01-17 10:24:02       51 阅读
  7. C Primer Plus(第六版)12.9 编程练习 第5题

    2024-01-17 10:24:02       46 阅读
  8. Linux C语言开发(二)C语言数据类型

    2024-01-17 10:24:02       38 阅读
  9. Linux———ifconfig命令详解

    2024-01-17 10:24:02       49 阅读
  10. BFS(广度优先搜索)_层序遍历&最短路径_总结

    2024-01-17 10:24:02       54 阅读