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

老师,你好。问一下,将鼠标放在div上,不让div完全变大和缩小,来回移动会产生div的抖动,有时候甚至会跑出屏幕很远。这种该如何解决呢?

正在回答

1 回答

你把var aLi.timer=null;定义到for循环中,下边清除计时器的参数改成obj.timer试试。我也遇到抖动不能变回原来的情况,下边是我改过的代码你看下。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>多物体运动</title>

<style>

*{margin: 0;padding: 0;}

ul{list-style: none;}

ul li{

width: 200px;

height: 100px;

background: yellow;

margin-bottom: 20px;

}

</style>

<script type="text/javascript">

window.onload=function(){

var aLi=document.getElementsByTagName('li');

for(var i=0;i<aLi.length;i++){

aLi[i].timer=null;

aLi[i].onmouseover=function(){

startMove(this,400);            //this是当前的li标签,因为无法判断是那个所以用this表示当前的标签。

}

aLi[i].onmouseout=function(){

startMove(this,200);

}

}

}


function startMove(obj,iTarget){

clearInterval(obj.timer);

obj.timer=setInterval(function(){

var speed=(iTarget-obj.offsetWidth)/8;

speed=speed>0?Math.ceil(speed):Math.floor(speed);

if(obj.offsetWidth==iTarget){

clearInterval(obj.timer);

}

else{

obj.style.width=obj.offsetWidth+speed+"px";

}

},30)

}

</script>

</head>

<body>

<ul>

<li></li>

<li></li>

<li></li>

</ul>

</body>

</html>


0 回复 有任何疑惑可以回复我~

举报

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