样式更改和setTimeout问题

时间:2015-06-03 20:12:31

标签: javascript css settimeout reload

我想通过更改style.left值并使用settimeout()来控制更改间隔,在屏幕上缓慢移动元素。

为了启动序列,我在body onload中使用了settimeout函数。

然后在函数结束时执行相同函数的延迟调用以继续序列。

问题似乎是style.left值更改导致重新加载,导致onload计时器再次触发。一旦打开页面,即使超时延迟为5秒,元素也会在屏幕上闪烁到最终位置。 ??

我知道更新的css动画技术,但它们并不符合我的需要。

是上面一段正确的假设??

1 个答案:

答案 0 :(得分:0)

这里最大的问题是你使用的是SetTimeout而不是SetInterval。您可以使用SetInterval轻松完成此操作。我包括一个jsfiddle示例:http://jsfiddle.net/33n99haj/1/

<div id="box" style="width:30px;height:30px;background-color:red;position:absolute;"></div>

window.e = document.getElementById("box");
var i = 0;

setInterval(function () {
    i = i + 20;
    window.e.style.left = i + "px";;
},1000);

不要忘记你的位置应该是你的CSS中的绝对位置