加了定时器刷新还是会出现动画时有时无的现象

加了定时器刷新还是会出现动画时有时无的现象

# 具体遇到的问题


# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

1
<!DOCTYPE html><br><html lang="en"><br><head><br>  <meta charset="UTF-8"><br>  <meta name="viewport" content="width=device-width, initial-scale=1.0"><br>  <title>封装形变类</title><br>  <style type="text/css"><br>    .ball{<br>      background: linear-gradient(#ff9b9b 50%,#106dbb 50%);<br>      width:150px;<br>      height: 150px;<br>      border-radius: 50%;<br>    }<br>  </style><br></head><br><body><br>  <div class="ball"></div><br><br>  <script type="text/javascript" src="index.js"></script><br></body><br></html><br>
1
​class Transform {<br>  _queue = [];<br>  constructor(selector) {<br>    this.el = document.querySelector(selector);<br>    this.el.style.transition = `all ${ .3 }s`;<br>    // this._queue = [];<br>  }<br>  // 位移<br>  translate(value, time) {<br>    return this._add('translate', value, time);<br>  }<br>  // 缩放<br>  scale(value, time) {<br>    return this._add('scale', value, time);<br><br>  }<br>  // 形变<br>  rotate(value, time) {<br>    return this._add('rotate', value, time);<br><br>  }<br><br>  // 添加动画<br>  _add(type, value, time) {<br>    this._queue.push({<br>      type,<br>      value,<br>      time<br>    })<br>    return this;<br>  }<br>  //添加完成,启动<br>  done() {<br>    this._start();<br>  }<br>  // 启动 从队列中把动画拿出来执行<br>  _start() {<br>    setTimeout(() => {<br>      const info = this._queue.shift();<br><br>      this.el.style.transform = this._getTransform(info);<br>    }, 0);<br><br>    const info = this._queue.shift();<br><br>    this.el.style.transform = this._getTransform(info);<br>  }<br><br>  _getTransform({<br>    time,<br>    value,<br>    type<br>  }) {<br>    switch (type) {<br>      case 'translate':<br>        return `translate(${ value })`;<br>    }<br>  }<br><br>}<br>const tf = new Transform('.ball');<br><br>tf.translate(`100px,100px`)<br>  .scale(2)<br>  .done()<br><br>console.log(tf);<br>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,老师直接拿同学的代码测试,刷新多次,都是没有动画的,没有出现动画时有时无的情况。这是因为如下代码重复了, this._queue.shift()执行两次,那么就会变成一个空数组,里面没有动画了。把它注释了,就会有动画了:

http://img1.sycdn.imooc.com//climg/5fbb90c809534f3a07180287.jpg

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码