【CSSアニメがガタつく】Safari(iPhone/iPad)でtransform・filter使用時のカクつきはwill-changeで滑らかになるよ!

jQueryとCSSでアニメーションするアイテムをページで使ったところ。
PCのChromeブラウザでは何ともないのに、iPhone、iPadで何故かカクカクになってしまう。
少し調べてみると、will-changeを書けば解決しました。

解決結果

結果から書くと、以下の2行目

.anime{
 will-change: transform;
 transform: rotateY(-360deg);
 animation-iteration-count:1;
 animation-duration:3.5s;
} 

will-change: transform;
を一番上のプロパティに追加する事でカクつきは消えました。

参考サイト:
CSS will-changeプロパティについて知っておくべきこと | POSTD

上記のサイトに詳しくかかれていますが、追加したwill-changeは、どのような変更を加えるかを前もってブラウザに知らせておく、という機能があるプロパティです。

私の場合は、transformを使うので、
will-change: transform;
としています。
なので、transform以外が原因の場合、その(スムーズに動いていない)プロパティを書くという事になります。
filter: blur(250px);等でカクつくときは、will-change: filter;となります。

will-changeの注意事項

will-changeは、できるだけ少ない範囲で使用するのがよいそうです。
本来は、JavaScriptの使用が推奨される(表示され使用しなくなるとStyleを消すなどできるため)もので、どのクラスにでも使用するというのは、意味がなくなります。

この事については、上記の参考サイトに方にとても詳しく載っていますので、読んでみてください。

今回のカクつきの原因ですが、Safariの仕様のようです。
Safariでは、一部のプロパティをGPUではなくCPUで処理していることがあり、それでカクつきが出ていたみたいです。

それにしても。
アニメーションの読み込み調整でも、jQueryの使用を控える形が多いですよね。
このアニメは、自分のサイトなので、このままでいいかなーと思っていますが…。
対応し終えた頃に消え去った技術、というのが一番トホホですよねー。(もうすぐウェブデザイナー25年の、制作あるある)