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年の、制作あるある)
コメント
トラックバックURL