为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候在DOM环境中发生再流?

什么时候在DOM环境中发生再流?

慕慕森 2019-07-11 20:56:27
什么时候在DOM环境中发生再流?什么类型的活动会触发Web页面的DOM再流?似乎有不同的观点。根据http:/www.nczonline.net/blog/2009/02/03/速度-您的javascript-第4部分/,发生了添加或删除DOM节点时。当您动态地应用样式时(例如元素、样式、宽度=“10 px”)。当您检索必须计算的度量时,例如访问偏移宽度、clientHight或任何计算出来的CSS值(通过兼容DOM的浏览器中的getComputedStyle或IE中的CurentStyle)。然而,根据http:/dev.opera.com/ports/view/Efficient-javascript/?page=3,只有在已排队的再流操作时,才采取测量触发器的再流。还有人有什么想法吗?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

两篇文章都是正确的。可以安全地假设,每当您在做可能合理需要的事情时,就可以计算DOM中元素的维数,从而触发再流。

另外,据我所知,两篇文章都说了同样的话。

第一篇文章指出,在以下情况下会发生再流:

当你检索必须计算的度量值。,例如访问偏移宽度客户高度,或任何计算出来的CSS值(通过getComputedStyle()在兼容DOM的浏览器或IE中的CurentStyle中,而DOM更改则排队等待进行。

第二条规定:

如前所述,浏览器可能会为您缓存几个更改,并且在所有这些更改都已完成时,只会再流一次。但是,请注意测量这个元素会迫使它重新流动。,以便测量结果是正确的。这些变化可能被或可能不会被明显地重新描绘,但回流本身仍然必须发生在幕后。

此效果是在使用以下属性进行测量时创建的偏移宽度,或者使用类似的方法getComputedStyle..即使没有使用这些数字,只要在浏览器仍在缓存更改时使用这些数字,就足以触发隐藏的再流。如果这些测量是反复进行的,您应该考虑只进行一次测量,并存储结果,然后可以在以后使用。

我认为这和他们之前说的一样。Opera将尽力缓存值,并避免为您重新流,但您不应该依赖它的能力这样做。

对于所有的意图和目的,只要相信他们都说的话,当他们说这三种类型的互动可以导致回流。

干杯。


查看完整回答
反对 回复 2019-07-11
?
万千封印

TA贡献1891条经验 获得超3个赞

查看“属性读取访问触发的呈现”部分。理解InternetExplorer呈现行为,其中IE中的以下代码将导致呈现活动。

function askforHeight () {
  $("#lower").height();  }


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 401 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信