Z tego przewodnika dowiesz się, jak tworzyć skuteczne animacje CSS.
W sekcji Dlaczego niektóre animacje działają wolno?, teorię stojącą za tymi rekomendacjami.
Zgodność z przeglądarką
Wszystkie właściwości CSS zalecane w tym przewodniku mają dobrą .
transform
opacity
will-change
Przenoszenie elementu
Aby przenieść element, użyj wartości słów kluczowych translate
lub rotation
w
transform
.
Aby na przykład wysunąć element w widoczny sposób, użyj elementu translate
.
.animate {
animation: slide-in 0.7s both;
}
@keyframes slide-in {
0% {
transform: translateY(-1000px);
}
100% {
transform: translateY(0);
}
}
Aby obracać elementy, użyj rotate
. W przykładzie poniżej wykonano rotację elementu
360°.
.animate {
animation: rotate 0.7s ease-in-out both;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
100% {
transform: rotate(360deg);
}
}
Zmienianie rozmiaru elementu
Aby zmienić rozmiar elementu, użyj wartości słowa kluczowego scale
w
usłudze transform
.
.animate {
animation: scale 1.5s both;
}
@keyframes scale {
50% {
transform: scale(0.5);
}
100% {
transform: scale(1);
}
}
Zmienianie widoczności elementu
Aby wyświetlić lub ukryć element, użyj opacity
.
.animate {
animation: opacity 2.5s both;
}
@keyframes opacity {
0% {
opacity: 1;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
Unikaj właściwości, które aktywują układ lub renderowanie
Zanim użyjesz na potrzeby animacji właściwości CSS (innej niż transform
i opacity
),
określać wpływ usługi na potok renderowania,
Unikaj właściwości, które aktywują układ lub renderowanie, chyba że jest to absolutnie konieczne.
Wymuś utworzenie warstwy
Jak wyjaśniliśmy w sekcji Dlaczego niektóre animacje działają wolno?, umieszczenie elementów w nowej warstwie pozwala przeglądarce ponownie je malować bez konieczności pomalować resztę układu.
Przeglądarki zwykle potrafią podejmować właściwe decyzje o tym, które elementy umieścić w
nowej warstwy, ale możesz ręcznie wymusić jej utworzenie za pomocą polecenia
will-change
.
Zgodnie z nazwą właściwość informuje przeglądarkę, że dany element
zmienić w jakiś sposób.
W CSS możesz zastosować element will-change
do dowolnego selektora:
body > .sidebar {
will-change: transform;
}
Specyfikacja
sugeruje, że powinno się to robić tylko w przypadku elementów, które zawsze będą
. Może to dotyczyć np. paska bocznego, który użytkownik może przesuwać,
na zewnątrz. W przypadku elementów, które rzadko się zmieniają, zalecamy zastosowanie
will-change
używa JavaScriptu, gdy zmiana jest prawdopodobna. Upewnij się, że:
Daj przeglądarce wystarczająco dużo czasu na wykonanie niezbędnych optymalizacji, a następnie usuń
właściwości w momencie zatrzymania zmian.
Jeśli chcesz wymusić tworzenie warstwy w przeglądarce, która nie obsługuje will-change
(najprawdopodobniej Internet Explorer), możesz ustawić transform: translateZ(0)
.
Debuguj wolne lub zacinające się animacje
W Narzędziach deweloperskich w Chrome i Firefoksie znajdziesz wiele narzędzi, dlaczego animacje są wolne lub płynne.
Sprawdzanie, czy animacja uruchamia układ
Animacja przesuwająca element za pomocą czegoś innego niż transform
to
będzie działać wolniej. W tym przykładzie porównano animację przy użyciu funkcji transform
do animacji za pomocą elementów top
i left
.
.box { position: absolute; top: 10px; left: 10px; animation: move 3s ease infinite; } @keyframes move { 50% { top: calc(90vh - 160px); left: calc(90vw - 200px); } }
.box { position: absolute; top: 10px; left: 10px; animation: move 3s ease infinite; } @keyframes move { 50% { transform: translate(calc(90vw - 200px), calc(90vh - 160px)); } }
Możesz to sprawdzić w tych 2 przykładach błędu: i sprawdzać skuteczność za pomocą Narzędzi deweloperskich.
Narzędzia deweloperskie w Chrome
- Otwórz panel Skuteczność.
- Rejestrowanie wydajności środowiska wykonawczego w trakcie animacji.
- Sprawdź kartę Podsumowanie.
Jeśli na karcie Podsumowanie w polu Renderowanie zobaczysz wartość inną niż 0, może to oznaczać, oznacza, że animacje działają na podstawie układu przeglądarki.
.Narzędzia deweloperskie w przeglądarce Firefox
W Narzędziach deweloperskich w Firefoksie atrybut Waterfall może pomóc w określeniu, na co użytkownik poświęca czas.
- Otwórz panel Skuteczność.
- Zacznij rejestrować wydajność w trakcie animacji.
- Zatrzymaj nagrywanie i sprawdź kartę Waterfall (Kaskada).
Jeśli zobaczysz wpisy Ponownie oblicz styl, co oznacza, że przeglądarka musi wrócić do początku polecenia kaskada renderowania aby wyrenderować animację.
Sprawdź, czy nie ma utraconych klatek
- Otwórz kartę Renderowanie w Narzędziach deweloperskich w Chrome.
- Zaznacz pole wyboru FPS Meter (Miernik klatek na sekundę).
- Obserwuj wartości podczas działania animacji.
Zwróć uwagę na etykietę Klatki u góry interfejsu Licznik klatek na sekundę.
Pokazuje wartości takie jak 50% 1 (938 m) dropped of 1878
. Wysoka wydajność
animacja ma wysoki odsetek, np. 99%
, co oznacza, że jest mało klatek
gdy ją usuniesz, a animacja wygląda płynnie.
Sprawdzanie, czy animacja uruchamia wyrenderowanie
Wyrenderowanie niektórych właściwości przez przeglądarkę jest droższe niż inne. Dla: wszystko, co jest rozmyte (np. cień), wydłuża niż rysowanie czerwonej ramki. Różnice te nie zawsze są oczywiste CSS, ale Narzędzia deweloperskie w przeglądarce mogą pomóc określić, które obszary jak i innych problemów z działaniem malowania.
Narzędzia deweloperskie w Chrome
- Otwórz kartę Renderowanie w Narzędziach deweloperskich w Chrome.
- Wybierz Migające farby.
- Poruszaj wskaźnikiem po ekranie.
Jeśli cały ekran miga lub zaznaczono obszary, w których coś Ci się nie podoba powinien się zmienić, należy dokładniej zbadać sprawę.
Jeśli chcesz sprawdzić, czy określona usługa powoduje problemy z wydajnością malowania, narzędzie do profilowania lakierów w Narzędziach deweloperskich w Chrome.
Narzędzia deweloperskie w przeglądarce Firefox
- Otwórz Ustawienia i dodaj przycisk Zestaw narzędzi dla Przełącz migawkę farby.
- Na stronie, którą chcesz sprawdzić, włącz przełącznik i poruszaj myszą lub przewiń, by zobaczyć wyróżnione obszary.
Podsumowanie
W miarę możliwości ogranicz animacje do tych typów: opacity
i transform
, aby zachować
na etapie komponowania ścieżki renderowania. Użyj Narzędzi deweloperskich, aby to sprawdzić
etap ścieżki, na który mają wpływ animacje.
Za pomocą programu do profilowania malowania możesz sprawdzić, czy któreś z nich są szczególnie chronione. drogie. Jeśli znajdziesz cokolwiek, sprawdź, czy inna właściwość CSS zwraca taki sam wygląd i styl, ale przy większej wydajności.
Z usługi will-change
korzystaj z umiarem i tylko w przypadku problemów ze skutecznością.