次のような数百の「行」要素があります。
<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());
});