属性名 | will-change |
---|---|
値 | auto | [scroll-position | contents | <css-property>]# |
初期値 | auto |
適用可能要素 | すべての要素 |
継承 | 継承しない |
サポート | https://caniuse.com/will-change |
要素がもう少しでアニメーションや変化を始めるであろうことをブラウザに伝えます。これを受けてブラウザは、アニメーション処理を GPU に送るためのレイヤ作成処理を行うなどの事前準備を行います。事前準備を行うことでアニメーションが滑らかに動くこともありますが、多用しすぎるとメモリやリソースを食いつぶして悪化することもあるため、使用には十分な注意が必要です。
JavaScript でアニメーションが始まる少し前にこのプロパティを設定し、アニメーションが終わると auto に戻すことが推奨されています。ただし、この処理も迂闊に行うと悪化することもあるようです。下記のサイトで詳しく説明されています。
transform
や opacity
などのCSSプロパティ名を指定します。もうすぐ要素に対して指定したCSSプロパティに関するアニメーションや変化が起こることを示します。function onAnimationWillStartSoon(el) { el.style.willChange = "transform, opacity"; } function onAnimationEnded(el) { el.style.wiiChange = "auto"; }