我想通过更改style.left值并使用settimeout()来控制更改间隔,在屏幕上缓慢移动元素。
为了启动序列,我在body onload中使用了settimeout函数。
然后在函数结束时执行相同函数的延迟调用以继续序列。
问题似乎是style.left值更改导致重新加载,导致onload计时器再次触发。一旦打开页面,即使超时延迟为5秒,元素也会在屏幕上闪烁到最终位置。 ??
我知道更新的css动画技术,但它们并不符合我的需要。
是上面一段正确的假设??
答案 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中的绝对位置