ランタイム パフォーマンスの応用科学
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
昨年末に Chrome Dev Summit のサイトを作成しました。マテリアル デザインの外観にしたかったのは、優れたデザイン言語であり、作成したいサイトの種類にも適していると思ったからです。しかし、他の新しいデザイン言語と同様に、考慮すべき質問、課題、決定があり、特にウェブの慣例に対応する場合はそうする必要があります。
サイトの作成が特に難しかったのが、カードをクリックしたときに「テイクオーバー」効果があったことです。
このような効果を 60 fps で実行させるには、ある程度の思考とプロトタイピング、そしていくつかの興味深い妥協点が必要でした。Chrome Dev Summit では、この効果についてお話を伺い、実現に至った経緯について残虐なことを詳しく説明しました。
高パフォーマンスのアニメーションは、今日では少なくともブラウザのコンポジタが優先されるものです。変換プロパティと不透明度プロパティを変更し続けることができれば、通常は優れたパフォーマンスが得られます。カード アニメーションに対する一般的なアプローチでは、次のようにします。
- カードが閉じているときのカード内のすべての要素の位置を測定します。
- カードのクラスを切り替えて(アニメーション化せずに)展開します。
- カードが展開されたら、カード内の要素の位置を再測定します。
- 差を計算する。
- 負の変換を適用して、要素を開始位置に戻します。
- アニメーションをオンにします。
- 負の変換を削除し、要素が画面上の最終位置まで現れるのを確認します。
どれも高コストに聞こえるかもしれませんが、ユーザーが操作した瞬間からアニメーションが開始されるまでに 100 ミリ秒の時間枠があります。これを超えると、お客様には遅延が発生します。この時間を使用して高コストの準備作業を行い、アニメーション自体の実行を低コストで実行できます。また、50 ~ 100 ミリ秒の最後に、クリーンアップ作業を行うためのウィンドウがあります。これは、何をしようとしているかによって便利な場合があります。
アニメーション作成にコストのかかる作業は、最初の 100 ミリ秒以内で済みますが、Nexus 5 では 70 ミリ秒もかかるため、余裕があります。
コードを取得する
サイトの詳細を確認する場合は、GitHub でコードがリリースされていると便利です。ぜひご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-08-09 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-08-09 UTC。"],[[["The Chrome Dev Summit website was built using Material Design and features a unique \"takeover\" card animation effect."],["Achieving 60fps animation performance involved favoring the browser's compositor by focusing on transform and opacity properties."],["The animation process involves pre-calculating element positions and applying transforms to create a smooth, performant effect within user perception thresholds."],["The website's code is publicly available on GitHub for developers to explore and learn from."]]],["The core content focuses on building a high-performance \"takeover\" animation for the Chrome Dev Summit site, inspired by Material Design. The process involved measuring element positions in collapsed and expanded states, calculating differences, applying negative transforms, toggling animations, and removing transforms to achieve the effect. This method ensures animations run at 60fps by utilizing the browser's compositor, focusing on transform and opacity changes, with heavy lifting within a 100ms user interaction window. The site's code is available on GitHub.\n"]]