リフローの再描画
922 ワード
まず、再描画と還流とは何かを理解してみましょう.
再描画:再描画と呼ばれる要素の可視性が変化します.可視性とはbackground,color,opacity,outlineなどの可視属性を指す.
再描画はブラウザに大きなパフォーマンス消費をもたらします.
リフロー:エレメントの形状や位置が変化すると、周囲のエレメント(子、親、兄弟)に影響し、ページ全体が再レンダリングされる可能性があります.
性能の消耗は非常に恐ろしい.
注意:リフローは必ず再描画が発生し、再描画は必ずしもリフローが発生しない.
還流が発生した場合:1.onload(ページは少なくとも1回の還流をトリガーする)2.ページサイズを変更します.形を変える(width,height,padding,border,font...)4.位置を変更する(margin,left,right).DOM 6を追加または削除する.テーブルレイアウト
リフローを回避する方法:1.複数のスタイルセットを割り当てる
2.アニメーションはできるだけ位置決め(position)または変形3を使用する.CSS式4は使用しない.tableレイアウトの使用を最小限に抑える
再描画:再描画と呼ばれる要素の可視性が変化します.可視性とはbackground,color,opacity,outlineなどの可視属性を指す.
再描画はブラウザに大きなパフォーマンス消費をもたらします.
.box{
width: 100px;
height: 100px;
background: red;
}
box.style.background = "blue"; //
リフロー:エレメントの形状や位置が変化すると、周囲のエレメント(子、親、兄弟)に影響し、ページ全体が再レンダリングされる可能性があります.
性能の消耗は非常に恐ろしい.
注意:リフローは必ず再描画が発生し、再描画は必ずしもリフローが発生しない.
box.style.width = "200px"; // +
還流が発生した場合:1.onload(ページは少なくとも1回の還流をトリガーする)2.ページサイズを変更します.形を変える(width,height,padding,border,font...)4.位置を変更する(margin,left,right).DOM 6を追加または削除する.テーブルレイアウト
リフローを回避する方法:1.複数のスタイルセットを割り当てる
box.className = "active ";
box.style.cssText = "width: "+100*3+"px; height: "+100*3+"px; background: blue";
2.アニメーションはできるだけ位置決め(position)または変形3を使用する.CSS式4は使用しない.tableレイアウトの使用を最小限に抑える