各位大神,看一下我的为什么不能停止。

来源:2-1 JS速度动画

金伟sir

2016-05-11 15:06

<!DOCTYPE HTML>

<html>

<head>

<meta charset="utf-8">

<style type="text/css">

#div1{

width:200px;

height:200px;

background-color:red;

position:relative;

left:-200px;

top:0px;

}

#share{

width:20px;

height:50px;

background-color:blue;

position:absolute;

left:200px;

top:50px;}

</style>

<script >

window.onload=function(){

var oDiv=document.getElementById("div1");

oDiv.onmouseover=function(){

startMove();

}

}

var timer=null;

function startMove(){

var oDiv=document.getElementById("div1");

timer=setInterval(function(){

  if(oDiv.offsetLeft == 0)

  {

  clearInterval(timer);

  }

  else{

    oDiv.style.left=oDiv.offsetLeft+10+'px';

    }

}

,30);

}

</script>

</head>

<body>

<div id="div1"><span id="share">点击</span></div>

</body>

</html>


写回答 关注

2回答

  • 浪子丶
    2016-05-11 16:55:03
    已采纳

    最开始没有把CSS样式初始化,加一段代码    *{margin:0;padding:0;}即可以完美的解决你这个问题

    金伟sir

    非常感谢!

    2016-05-17 09:03:01

    共 2 条回复 >

  • 浪子丶
    2016-05-16 20:52:38

    因为不初始化的话,div初始的left值就不是-200、速度+的值就不会完整的等于0.永远不满足循环停止的条件,所以就陷入了死循环

    sulin

    太棒啦,你也完美的解决了我的问题,但我还有一个问题想问问你,你能帮忙解决一下吗?我开始的时候清除所有格式写成了div{margin:0; padding: 0;},所以怎么也停不下来,我就自己乱改了一下,将他们的定位改成了#div1{position: t:absolute;} #share{position:relative;},居然达到了效果,但是这样组合使用absolute和relative在原理上好像是错误的!

    2016-05-24 09:17:39

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题