我有几百个这样的“行”元素:
<div class='row'>
<div class='cell'></div>
<div class='cell'></div>
<div class='cell'></div>
</div>
在页面上呈现它们之后,我需要获取它们的 clientHeight。我知道“clientHeight”属性会强制回流,这会影响我的表现,因为它们太多了。但是 - 它们已经被渲染,我知道它们的大小在渲染时间和我查询它们的高度之间没有变化。
有没有办法告诉浏览器在查询高度时不要重排?此外 - webkit 检查员说:
Layout tree size 5901
Layout scope Whole document
并且 div 位于绝对定位的祖先中 - 不应该只重排绝对定位的元素吗?
编辑:
所以提供的答案是正确的。我实际上弄脏了布局,因为我有这个循环:
rows.each(function(){
$(this).css('height', this.clientHeight);
});
将代码更改为此解决了问题:
var heights = rows.map(function(){
return this.clientHeight;
});
rows.each(function(){
$(this).css('height', heights.shift());
});