前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >(九)使用js实现动画

(九)使用js实现动画

作者头像
老怪兽
发布2023-02-22 19:00:55
发布2023-02-22 19:00:55
5.2K00
代码可运行
举报
运行总次数:0
代码可运行

使用 JavaScript 实现动画

说明

因为 css 不能实现较为复杂的动画,如数字变化动画,或者 canvas 形变动画等

认识 js 动画
  • 市面上有很多优秀的 js 库 如下面这个 GreenSock
  • 我们需要在合适的地方切入 js 动画,具体参数如下图
  • 这些回调函数需要以当前 组件作为实例调用,方便对接 js 库操作 DOM 实例
  • enterleave 还接收第二个参数 done 需要手动调用通知 vue 动画执行完成可以正式卸载挂载组件了
代码语言:javascript
代码运行次数:0
复制
function lave(el, done) {
  done()
}
禁用组件自带的 6 个 css 动画
  • 使用 v-bind:css="fasle" 简写 :css="fasle"
代码语言:javascript
代码运行次数:0
复制
<Transition :css="false">
  <div></div>
</Transition>
使用 web animation Api 来实现动画
  • web animation api 是浏览器原生支持的,他给每一个 DOM 元素都添加了一个 animat 方法,方法接收两个参数,第一个参数接收一个数组 [] 数组的每一个元素相当于 @keyframe 的百分比阶段,第二个参数相当于 animate 的配置参数相当于 animation 的配置,可以配置动画时常,动画执行方式,就跟 animation 是一样的
代码语言:javascript
代码运行次数:0
复制
function enter(el, done) {
  // 通过el 实例调用 `animate` 方法
  cosnt fadeIn = el.animate([{opacity: 0}, {opacity: 1}], {
    duration: 700,        // 执行时间
    easing: 'ease-in-out'   // 动画类型
  })

  // animate 会返回一个animation实例,通过他我们可以监听动画的执行阶段,可以手动暂停,或者播放动画

  fadeIn.onfinis = () => {
    done()
  }
}
可以和 组件自带的 6 个 class 一起混合使用
  • 删除 :class="false" ; 和之前一样配置 6 个 class 就可以了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 JavaScript 实现动画
    • 认识 js 动画
    • 禁用组件自带的 6 个 css 动画
    • 使用 web animation Api 来实现动画
    • 可以和 组件自带的 6 个 class 一起混合使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档