런타임 성능의 응용 과학
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
작년 말에 Chrome Dev Summit 사이트를 구축했습니다. 머티리얼 디자인 디자인은 훌륭한 디자인 언어이기 때문에 모양과 느낌이 들었으면 좋았고, 제가 만들고자 했던 사이트에도 잘 어울릴 거라고 생각했습니다. 그러나 여느 디자인 언어와 마찬가지로 웹 관습을 다룰 때는 특히 해결해야 할 질문, 과제, 결정이 있습니다.
사이트에서 카드 클릭 시 '전면 광고'를 생성할 때 특히 문제가 생깁니다.
60fps로 이러한 효과를 실행하려면 몇 가지 생각과 프로토타입 제작, 몇 가지 흥미로운 타협이 필요했습니다. 저는 Chrome Dev Summit에서 이 효과에 대해 이야기하고 제가 어떻게 구축했는지 자세히 설명해 주었습니다.
현재 고성능 애니메이션은 브라우저의 컴포지터를 선호하는 것입니다. 변형 및 불투명도 속성 변경을 고수할 수 있으면 일반적으로 우수한 성능을 확인할 수 있습니다. 카드 애니메이션에 대한 일반적인 접근 방식은 바로 이러한 작업을 수행합니다.
- 카드가 접혀 있을 때 카드에 있는 모든 요소의 위치를 측정합니다.
- 카드의 클래스를 전환하여 애니메이션 없이 펼칩니다.
- 이제 카드가 펼쳐져 카드에서 요소의 위치를 다시 측정합니다.
- 차이를 계산합니다.
- 음수 변환을 적용하여 요소를 다시 시작 위치로 이동합니다.
- 애니메이션을 사용 설정합니다.
- 부정적인 변환을 제거하고 요소들이 화면에서 최종 위치로 향하는 모습을 지켜보세요.
이 모든 작업은 비용이 많이 들 수 있지만 사용자가 상호작용하는 순간부터 애니메이션이 시작되어야 하는 시점까지 100ms의 기간이 있습니다. 이 금액을 초과하면 사용자는 지연을 체감합니다. 이 시간을 사용하여 비용이 많이 드는 준비 작업을 실행하면 애니메이션 재생 중에 더 저렴하게 실행할 수 있습니다. 약 50~100ms가 지나면 작업 정리를 위한 창이 있습니다. 이는 하려는 작업에 따라 유용할 수 있습니다.
애니메이션 작업에 고가의 작업이 이 첫 100밀리초 이내에 완료되며, Nexus 5의 경우 70밀리초 영역에서 작업이 수행되므로 여유 공간이 있습니다.
코드 가져오기
이 사이트를 더 자세히 살펴보는 데 관심이 있다면 GitHub에 코드가 공개되었다는 소식을 전해드립니다. 한 번 방문해 보세요.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-07-25(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"]],["최종 업데이트: 2025-07-25(UTC)"],[],["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"]]