0

我的问题很简单,

为什么当我尝试获取元素的偏移位置时,我可以在 chrome devtool 时间轴上看到任何回流?

我刚读过这个=>

IE 中的 offsetTop、offsetLeft、offsetWidth、offsetHeight、scrollTop/Left/Width/Height、ClientTop/Left/Width/Height、getComputedStyle() 或 currentStyle

以上所有这些本质上都是请求有关节点的样式信息,并且无论何时执行此操作,浏览器都必须为您提供最新的值。为此,它需要应用所有计划的更改、刷新队列、咬紧牙关并进行回流。

所以我打开了我的 chrome devtool 时间线,但是当我尝试这个时我没有看到任何重新计算的样式(紫色的东西):

element.offsetHeight;

查看某些渲染的唯一方法是更改​​元素的样式:

element.style.left = element.offsetLeft + 10 + "px";

每次我尝试获取窗口的滚动顶部但没有:/

$(window).scrollTop();
4

1 回答 1

1

感谢克里斯托夫,我(也许)找到了答案

如何可视化读取 element.offsetWidth 导致重新计算/重排

好的,如果我明白了:

如果样式信息没有被修改(对于他和他的父母),offsetHeight 将刷新渲染队列然后浏览器已经有了信息并且不会进行重排:)

这就是为什么我们看不到任何回流 :)

于 2013-10-17T13:36:20.877 回答