我的html页面中有两个div
<div id="box1">
</div>
<div id="box2">
</div>
Run Code Online (Sandbox Code Playgroud)
它们都绝对位于不同的位置.
#box1,#box2 {
height: 100px;
width: 100px;
background-color: red;
position: absolute;
}
#box2 {
top :200px;
}
Run Code Online (Sandbox Code Playgroud)
在我的Javascript中,我正在动画这两个div,如下所示
$(document).ready(function() {
function animateBoxes() {
$("#box1").animate({left : "500px"},5000);
$("#box2").animate({left : "500px"},3000);
}
animateBoxes();
});
Run Code Online (Sandbox Code Playgroud)
当我的页面加载div同时开始移动时.
我的问题是,如果javascript是单线程的,那么div是如何同时移动的.因为div的移动是由两个动画函数通过javascript处理的,一个在box1上,另一个在box2上.
两个动画函数是如何同时执行的?
Javascript是单线程意味着如果被卡住整个脚本被卡住了......并且只有这样才能克服这个问题worker
.要回答你的问题,你知道jquery的动画功能如何工作......它设置定时器来调用更新div位置的函数.所以这两个div都朝着他们的目标定位了一点.计时器由javascript提供,并像处理事件一样处理.Javascript有事件循环......浏览器重申了这一点.一旦js完成,浏览器会浏览所有事件并检查它们是否已被触发,然后运行与它们关联的函数.这里的animate函数将自身与timer事件相关联,并逐渐更新div的位置,从而看起来像动画一样.并且因为它在步骤中发生,所以整个js不必等待该动画结束以继续执行.
这是事件基本上在js中的工作方式:
看看这个例子:http://jsfiddle.net/82zLC/6/
这将让您了解动画被分为多个步骤更新的块...尝试将t更改为60.
归档时间: |
|
查看次数: |
95 次 |
最近记录: |