未来のふるまいについてヒントを与える。
名前 | will-change
|
---|---|
値 | auto | <animateable-feature># |
初期値 | auto |
適用対象 | |
継承 | されない |
百分率 | 受容しない |
算出値 | 指定値 |
正準的順序 | 文法に従う |
アニメーション型 | アニメート不可 |
will-change プロパティは、ユーザー エージェントに描画ヒントを供する ― それは、作者が要素上で遂行するものと予期する変化の種類を言明する。これにより、ユーザー エージェントは、[その変化の滑らかな描画に必要とされる最適化]を早めに遂行しておけるようになり、作者が実際に、その特能を、変化させ/アニメートさせ、始めたときの“カクつき”を避けれるようになる。
will-change からの情報を利用する仕方は、ブラウザーごとに異なる。同じブラウザーであっても、時機によって利用する仕方が異なることすらある。例えば、ブラウザーは、要素に will-change: transform; が指定されたときには、要素を専用の“GPU 層”に昇格させるが、それが宣言された要素が多過ぎるときは、GPU メモリーが枯渇しないよう、それを避けることもある。
auto
scroll-position
注意: 例えば、ブラウザは、スクロール可能な要素上の[“スクロールウィンドウ”内にある内容と、そのウィンドウをはみ出る一部の内容]のみを描画することが多い ― 描画の省力化によるメモリー/時間の節約と、スクロール時の見栄えとを、天秤にかけながら。この値は、[スクロールがより、長く/速く、行われても滑らかになるよう、描画する内容の範囲をスクロール ウィンドウの周囲から延長すべきである]ことをブラウザに通達する。
contents
この値は主に、[[要素内容のある面が秒間に何度も変化する]ような、JS に基づく内容のアニメーション]に対する、ブラウザーによる最適化を助けるためにある。ブラウザーによるこの種の最適化は、宣言的アニメーションに対しては、すでに可能な限り自動的に行われている。【そのように規定されてもいる。】
注記: この値は、およそ それが宣言された要素を根とする下位ツリー全体に適用されることに注意 ― それは、ブラウザーに、[どの子孫であれ、何らかの仕方で変化するもの]を織り込むべきであることを指示するので。これを利用すると、文書における要素の“地位が高められる”結果、ページの処理能を引っ張る要因になり得る。よって、可能な限り文書の少ない部分を包含するような、文書ツリーの“末端”に近い要素のみに利用することを勧める。
注意: 例えば、will-change: background; を設定することは、background の各種 下位プロパティすべてに渡り、will-change: background-image, background-position, ...; を設定するのと同じことになる。
ここでの <custom-ident> 生成規則からは、<custom-ident> から通常どおり除外されるキーワードに加えて、次のキーワードも除外される: will-change、none、all、auto、scroll-position、contents
注記: ほとんどのプロパティは、指定されたとしても効果はない ― ユーザー エージェントは、ほとんどのプロパティに対しては、その変化に際し、特別な最適化は遂行しないので。指定しても、依然として安全であるが ― それは、単純に効果がないことになる。
プロパティ としてカスタム プロパティが指定されても、効果を及ぼしてはならない ― すなわち、カスタム プロパティを通して生じる効果は、[下に与える、[プロパティ が、何かを生じさせるような非初期値をとり得ること]を条件とする規則]には、織り込まれない。
注記: プロパティとして認識されない値を指定しても申し分ない ― それは、単純に効果がないことになる。これにより、一部のユーザー エージェントにしか存在しない新たなプロパティを、安全に ― そのプロパティを知らない他のユーザー エージェントには影響することなく ― 指定できるようになる。
注意: 例えば、非初期値に設定された transform を伴う要素に対する、ブラウザーによる取り扱いは、通常の要素と大きく異なることが多い ― たぶん、transform が生産し得るような変形の類を、専用の“GPU 層”などの仕組みを利用して、より容易に/より素早く、描画するために。値 transform は、[古い/新たな層の再描画に伴う遅延を避けるため、要素の変形が開始されるに先行して即時に、要素を、その専用の層に昇格させるべきである]ことをブラウザーに通達する。
プロパティ がとり得る非初期値として:
注意: 例えば、要素上の opacity に 1 未満の値が設定された場合、要素は積層文脈を作成する。したがって、要素上に will-change: opacity を設定したときも、積層文脈が作成されることになる ― opacity の値が 現在は 1 に等しいとしても。
要素上に will-change プロパティが指定されても、上で指定された 積層文脈/包含ブロック、の作成を超えるような、直接的な効果はない。それはもっぱら、ユーザー エージェント向けの描画ヒントである ― 一定の型の変化に対し、その変化が実際に生じ始める前に、高価になり得る最適化を設定しておけるようにするための。
表示内容: |
表示内容: |