Javascript jQuery';在完全应用更改之前,是否阻止css方法?

Javascript jQuery';在完全应用更改之前,是否阻止css方法?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,在使用jQuery的CSS函数应用CSS更改后,我有一些计算要执行。此方法是否等待CSS更改完全应用,并完成元素的重新绘制?使用JavaScript修改样式是一种同步行为。更新元素的类、ID和内联样式将立即对元素生效,您可以安全地获取该元素的新维度或样式 尽管如此,在不同的浏览器中有一些浏览器,除非进行非常具体的样式更改,否则不会进行重新绘制。同样,布局的重新计算是同步进行的,但是您可能需要做额外的工作来强制重新绘制。您将在不同的浏览器中看到不同的行为,因为jQuery正在使用内联样式更新标记

在使用jQuery的
CSS
函数应用CSS更改后,我有一些计算要执行。此方法是否等待CSS更改完全应用,并完成元素的重新绘制?

使用JavaScript修改样式是一种同步行为。更新元素的类、ID和内联样式将立即对元素生效,您可以安全地获取该元素的新维度或样式



尽管如此,在不同的浏览器中有一些浏览器,除非进行非常具体的样式更改,否则不会进行重新绘制。同样,布局的重新计算是同步进行的,但是您可能需要做额外的工作来强制重新绘制。

您将在不同的浏览器中看到不同的行为,因为jQuery正在使用内联样式更新标记,并且浏览器决定何时重新绘制。例如,IE似乎会错过很多后续的样式更改间隔-它似乎会等待一点点事情解决,但我怀疑这正是渲染引擎的本质。Firefox和Chrome将更快速地更新

问题:让动画顺利执行是否有困难?看看动画中的步骤:事件


我使用了与@bfavaretto建议的setInterval和clearInterval类似的方法来管理IE动画上的单个帧之间的间隔,因为它对绘制连续更新犹豫不决,尤其是使用jQuery UI进度条之类的工具。

您的问题的真正答案是,它不会等待,即使它应该这样做,因为该操作似乎是同步的-代码方面的

如果您想在设置css规则后立即执行某些操作,则需要使用jQuery
animate
函数,持续时间为
0

    $('#my-selector').animate({
        'my-css-property-name': 'my-css-property-value'
    }, {
        duration: 0,
        done: function(animation, jumpedToEnd) {
            // Your callback here
        }
    })

要了解有关
done
功能参数的更多信息,请检查您实际上无法控制该参数的工作方式。但是,您可以应用CSS更改,然后在稍后发生的超时时间内安排后续工作。您看到了吗?是的,正如您在此处看到的: