iOS SafariはCSSのfilterプロパティを使用すると重くなる
iOS SafariはCSSのfilterプロパティの処理を何故かGPUを使用せずにCPUで行います。そのため、filterプロパティを使用するとCPU使用率が高くなり、表示の乱れやレンダリング速度の低下、ブラウザが固まるなどの不具合が発生することがあります。
対策
対策1. will-changeを使用する
will-change
プロパティを設定することでGPUレイヤーを作成する事ができます。
.foo {
filter: drop-shadow(16px 16px 20px red) invert(75%);
will-change: filter;
}
しかし、will-change
プロパティは、リソースの消費が激しいのでwill-change
プロパティを乱用することは避けましょう。
非推奨な例
*,
*::before,
*::after {
will-change: all;
}
対策2. transformを使用する
transform
プロパティを設定することでGPUレイヤーを作成する事ができます。
.foo {
filter: drop-shadow(16px 16px 20px red) invert(75%);
transform: translateZ(0);
}