一部の UI 効果には jQuery プラグインを使用しています。プラグインはうまく機能しますが、クロムではCPUが溶けます。プラグインはcss-transform
画像を試行します。画像の例を次に示します。
<img width="1600" height="568" alt="" src="foo.png" style="width: 1598px; height: 567px; left: -209px; top: -2px; opacity: 1; transform-origin: center top 0px; transition-duration: 0s; transform: scale(1);">
ここでは、クロムで問題を引き起こしているコード ($img は jQuery オブジェクトです):
$img.css({
"-webkit-transition-duration":"20s",
"-webkit-transition-timing-function":"ease",
"-webkit-transform":"scale(0.73) rotate(0.1deg)",
"-webkit-perspective":"0"
});
問題の部分は「-webkit-transform
」です。Firefox では、同等の CSS 変換によるパフォーマンスの問題はありません。
この問題は既知ですか? 別の方法はありますか?
編集:
3d バリアントを使用しても、ここでは問題が解決しません。
$img.css({
"-webkit-transition-duration":"20s",
"-webkit-transition-timing-function":"ease",
"-webkit-transform":"scale3d(0.73,0.73,0.73) rotate3d(0,0,0,0.1deg)",
"-webkit-perspective":"0"
});
EDIT2:
chrome devtools のタイムラインを詳しく調べたところ、多数の「複合レイヤー」イベント (15 ミリ秒ごと) が見られます。CSS 変換を使用すると、フレームレートが常に約 60 FPS になることにも気付きました (FPS カウンターを有効にした後)。
単純な $.animate() を使用して画像をスケーリングすると、FPS は最大で約 20 になり、「複合レイヤー」イベントが少なくなります (約 40 ミリ秒ごと)。
重い(再)塗装が問題を引き起こしているようです。