Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在屏幕上强制回流?_Javascript_Performance_Browser - Fatal编程技术网

Javascript 如何在屏幕上强制回流?

Javascript 如何在屏幕上强制回流?,javascript,performance,browser,Javascript,Performance,Browser,我们知道,一些计算样式和布局的操作将导致性能瓶颈。 但是浏览器是如何得到它的呢?见下文 /*a: display: block in css*/ a.style.display = 'none' console.log(a.offsetLeft); /*do something*/ offsetLeft的值将如预期的那样为0 但是,如果做某事花费太多时间 元素a将出现在屏幕上,直到完成某件事 为什么??以及如何在屏幕上强制回流(显示:无)。 谢谢在执行JS时,浏览器不会重新绘制。如果您知道“做

我们知道,一些计算样式和布局的操作将导致性能瓶颈。 但是浏览器是如何得到它的呢?见下文

/*a: display: block in css*/
a.style.display = 'none'
console.log(a.offsetLeft);
/*do something*/
offsetLeft
的值将如预期的那样为
0

但是,如果
做某事花费太多时间

元素
a
将出现在屏幕上,直到
完成某件事

为什么??以及如何在屏幕上强制回流(
显示:无
)。
谢谢

在执行JS时,浏览器不会重新绘制。如果您知道“做点什么”代码花费的时间太长,您可以将其设置为“无”延迟的超时,以便当前函数将完成,浏览器将重新绘制,然后超时将运行。@nnnnnn但是
如何回流
(offsetLeft->0)同步完成仅仅因为重新绘制尚未发生并不意味着浏览器不知道元素已通过
display:none
从流中删除。这意味着回流发生在webkit中,但屏幕上的回流发生在gpu中?