Expand description
アニメーション/トランジションで変化したプロパティが、 再レイアウトを要するか / 再ペイントだけで足りるかの判定。
§背景
CSS アニメーションは 1 フレームごとに parse_and_layout(HTML 再パース +
2403 ルール再カスケード + レイアウト)を丸ごと呼んでいた。実サイトでは
これが 10 秒以上かかるため、描いたフレームが画面に出る前に次のレイアウトが
始まり、ページが永久に収束しなかった。
しかし実際にアニメーションされるプロパティの大半(opacity / color /
background-color / transform 等)はボックスの大きさも位置も変えない。
これらだけが変化したフレームは、算出値を差し替えて再ペイントするだけでよい。
§安全側の既定
分類が不明なプロパティは再レイアウト側に倒す。再ペイントで済ませてよいものを 再レイアウトしても「遅いだけで絵は正しい」が、逆に再レイアウトが必要なものを 再ペイントで済ませるとレイアウトが崩れたまま画面に残るため。
グローバル状態にもハードウェアにも依存しない純粋ロジックのみで構成する。
Enums§
- Repaint
Scope - このフレームの変更を反映するのに必要な処理の範囲。
- Scope
Error - 判定の引数が不正だった場合のエラー。
Constants§
- PAINT_
ONLY 🔒 - ボックスの寸法・位置・フロー構造に影響せず、見た目だけを変えるプロパティ。 ここに載っているものだけが再ペイント扱いになる。
Functions§
- is_
paint_ only - プロパティ 1 つが再ペイントだけで反映できるかを返す。
- scope_
for - このフレームで変化したプロパティ名の集合から、必要な処理範囲を決める。