为了账号安全,请及时绑定邮箱和手机立即绑定

js tween动画闪动问题

js tween动画闪动问题

红颜莎娜 2018-12-07 04:38:49
在写JS Tween动画的时候,在还没有执行完一次onmouseover的情况下再次出发会出现图片闪动。怎样解决?   CSS: <style type="text/css"> *{ padding: 0; margin: 0; } #div{ position: absolute; left: 0; width: 102px; height: 5px; background: black; } #ul{ height: 52px; width: 450px; list-style: none; } #ul li{ float: left; width: 100px; border-top: 1px black solid; border-bottom: 1px black solid; height: 50px; line-height: 50px; text-align: center; } </style> Html: <ul id="ul"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <div id="div"></div> JS: <script type="text/javascript" src="tween.js"></script> <script type="text/javascript"> var div=document.querySelector("#div"); var ul=document.querySelector("#ul"); var li=document.querySelectorAll("#ul li"); var _width=div.offsetWidth; console.log(_width); for(i=0;i<4;i++){ li[i].index=i; li[i].onmouseover=function(){ var start=div.offsetLeft; var startStep=0; var change=_width*this.index-div.offsetLeft; var endStep=100; var timer=setInterval(function(){ startStep++; if(startStep>=endStep){ clearInterval(timer); } div.style.left=Tween.Linear(startStep,start,change,endStep)+"px"; },.1) } } </script>
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

var start=div.offsetLeft;

这句放到循环外。

你执行一次后,div的位置改变了。

查看完整回答
反对 回复 2018-12-24
?
RISEBY

TA贡献1856条经验 获得超5个赞

延迟设置小一点

查看完整回答
反对 回复 2018-12-24
?
www说

TA贡献1775条经验 获得超8个赞

在哪里设置延迟,我没有设置延迟啊..setInterval的时间已经是0.1毫秒了

查看完整回答
反对 回复 2018-12-24
  • 3 回答
  • 0 关注
  • 569 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信