Przykłady animacji CSS o wysokiej wydajności

Z tego posta dowiesz się, jak powstają niektóre popularne animacje znalezione w CodePen. Wszystkie te animacje wykorzystują techniki zapewniające skuteczność omówione w innych artykułach w tej sekcji.

Aby poznać teorię, przeczytaj artykuł Dlaczego niektóre animacje są spowolnione? oraz w Przewodniku dotyczącym animacji znajdziesz praktyczne wskazówki.

Animacja wczytywania kreatora

Wyświetl animację wczytywania kreatora w CodePen

Ta animacja wczytywania jest w całości oparta na CSS. Obraz i cała animacja zostały utworzone w kodach CSS i HTML, bez obrazów ani JavaScriptu. Aby dowiedzieć się, jak został utworzony i jak działa, możesz skorzystać z Narzędzi deweloperskich w Chrome.

Sprawdzanie animacji za pomocą Narzędzi deweloperskich w Chrome

Gdy animacja jest aktywna, otwórz kartę Wydajność w Narzędziach deweloperskich w Chrome i nagraj kilka sekund animacji. W podsumowaniu powinno być widoczne, że podczas uruchamiania tej animacji przeglądarka nie wykonuje żadnych operacji renderowania ani renderowania.

Podsumowanie w Narzędziach deweloperskich
Podsumowanie po profilowaniu animacji kreatora.

Aby dowiedzieć się, w jaki sposób animacja została wygenerowana bez konieczności zmiany układu i wyrenderowania, sprawdzić ruchome elementy w Narzędziach deweloperskich w Chrome. W panelu Animacje możesz znaleźć różne animowane elementy. podświetlenie dowolnego elementu w DOM.

Panel Animacje pokazujący różne części naszej animacji.
Wyświetlanie i wybieranie elementów w panelu animacji Narzędzi deweloperskich w Chrome.

Na przykład wybierz trójkąt, i zobaczysz, jak pudełko, w którym znajduje się pierwiastek, zmienia się w powietrzu, podczas obrotu, po czym wraca do pozycji początkowej.

Film pokazujący, jak można śledzić ścieżkę trójkąta w Narzędziach deweloperskich w Chrome.

Gdy element będzie nadal zaznaczony, przejdź do panelu Style. Widać tam narzędzie CSS, które rysuje kształt trójkąta, i zastosowaną animację.

Jak to działa

Trójkąt tworzy się za pomocą pseudoelementu ::after, aby dodać wygenerowaną treść. przy użyciu obramowań, aby utworzyć kształt.

.triangle {
    position: absolute;
    bottom: -62px;
    left: -10px;
    width: 110px;
    height: 110px;
    border-radius: 50%;
}

.triangle::after {
    content: "";
    position: absolute;
    top: 0;
    right: -10px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 28px 48px 28px;
    border-color: transparent transparent #89beb3 transparent;
}

Do animacji dodaje się następujący wiersz kodu CSS:

animation: path_triangle 10s ease-in-out infinite;

Pozostań w Narzędziach deweloperskich w Chrome, aby znaleźć klatki kluczowe, przewijając panel stylów w dół. Animacja jest tworzona za pomocą parametru transform, który zmienia położenie elementu i jest obrócony. Właściwość transform jest jedną z właściwości opisanych w Przewodniku po animacji, który nie powoduje wykonywania przez przeglądarkę operacji układu ani renderowania (co jest główną przyczyną powolnych animacji).

@keyframes path_triangle {
  0% {
    transform: translateY(0);
  }
  10% {
    transform: translateY(-172px) translatex(10px) rotate(-10deg);
  }
  55% {
    transform: translateY(-172px) translatex(10px) rotate(-365deg);
  }
  58% {
    transform: translateY(-172px) translatex(10px) rotate(-365deg);
  }
  63% {
    transform: rotate(-360deg);
  }
}

Każda z ruchomych części animacji wykorzystuje podobne techniki. W efekcie powstaje złożona animacja, która działa płynnie.

Pulsujące koło

Wyświetl pulsujący okrąg w CodePen

Ten typ animacji czasami ma zwrócić uwagę na coś na stronie. Aby zrozumieć animację, możesz skorzystać z Narzędzi deweloperskich w Firefoksie.

Sprawdzanie animacji za pomocą Narzędzi deweloperskich w przeglądarce Firefox

Po uruchomieniu animacji otwórz kartę Performance (Wydajność) w Narzędziach deweloperskich w Firefoksie i nagraj kilka sekund animacji. Zatrzymaj nagrywanie, w kaskadzie nie powinno być żadnych pozycji Ponownie oblicz styl. Wiesz już, że animacja nie powoduje ponownego obliczania stylu, a co za tym idzie – także operacji układu i malowania.

szczegóły animacji w kaskadzie przeglądarki Firefox,
Wodospad Narzędzi deweloperskich w Firefoksie.

Pozostań w Narzędziach deweloperskich w Firefoksie i sprawdź okrąg, aby zobaczyć, jak działa ta animacja. Element <div> z klasą pulsating-circle wskazuje położenie okręgu, nie rysuje jednak okręgu.

.pulsating-circle {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    width: 30px;
    height: 30px;
}

Widoczne koło i animacje są tworzone za pomocą pseudoelementów ::before i ::after.

Element ::before tworzy nieprzezroczysty pierścień, który rozszerza się poza białe koło, za pomocą animacji o nazwie pulse-ring, animuje transform: scale i opacity.

.pulsating-circle::before {
    content: '';
    position: relative;
    display: block;
    width: 300%;
    height: 300%;
    box-sizing: border-box;
    margin-left: -100%;
    margin-top: -100%;
    border-radius: 45px;
    background-color: #01a4e9;
    animation: pulse-ring 1.25s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
}

@keyframes pulse-ring {
  0% {
    transform: scale(0.33);
  }
  80%, 100% {
    opacity: 0;
  }
}

Innym sposobem sprawdzenia, które właściwości są animowane, jest wybranie panelu Animacje w Narzędziach deweloperskich Firefoksa. Zobaczysz wizualizację użytych animacji. oraz właściwości, które są animowane.

Po wybraniu ::before pseudoelementu widać, które właściwości są animowane.

Biały okrąg jest tworzony i animowany za pomocą pseudoelementu ::after. Animacja pulse-dot wykorzystuje parametr transform: scale, by zwiększać lub zmniejszać kropkę podczas animacji.

.pulsating-circle::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  width: 100%;
  height: 100%;
  background-color: white;
  border-radius: 15px;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
  animation: pulse-dot 1.25s cubic-bezier(0.455, 0.03, 0.515, 0.955) -0.4s infinite;
}

@keyframes pulse-dot {
  0% {
    transform: scale(0.8);
  }
  50% {
    transform: scale(1);
  }
  100% {
    transform: scale(0.8);
  }
}

Tego typu animacje można wykorzystać w różnych miejscach w aplikacji, Ważne jest, aby te drobne elementy nie miały wpływu na ogólną wydajność aplikacji.

Czysta sfera 3D CSS

Wyświetlanie obszaru Pure CSS 3D w CodePen

Ta animacja wydaje się dość skomplikowana, jednak wykorzystuje techniki, które omówiliśmy już w poprzednich przykładach. Złożoność animacji wynika z dużej liczby elementów.

Otwórz Narzędzia deweloperskie w Chrome i wybierz jeden z elementów z klasą plane. Sfera składa się z obracających się płaszczyzn i promieni.

Wygląda na to, że samolot się obraca.
.
.

Te samoloty i promienie znajdują się wewnątrz otoki <div>, i to ten element obraca się za pomocą transform: rotate3d.

.sphere-wrapper {
  transform-style: preserve-3d;
  width: 300px;
  height: 300px;
  position: relative;
  animation: rotate3d 10s linear infinite;
}

@keyframes rotate3d {
  0% {
    transform: rotate3d(1, 1, 1, 0deg);
  }
  25% {
    transform: rotate3d(1, 1, 1, 90deg);
  }
  50% {
    transform: rotate3d(1, 1, 1, 180deg);
  }
  75% {
    transform: rotate3d(1, 1, 1, 270deg);
  }
  100% {
    transform: rotate3d(1, 1, 1, 360deg);
  }
}

Kropki znajdują się zagnieżdżone w elementach plane i spoke, Wykorzystują animację wykorzystującą przekształcenie, aby skalować i tłumaczyć tekst. Efektem jest pulsowanie.

Kropka obraca się wraz z kulą i pulsuje.
.spoke-15 .dot,
.spoke-21 .dot {
  animation: pulsate 0.5s infinite 0.83333333s alternate both;
  background-color: #55ffee;
}

@-webkit-keyframes pulsate {
  0% {
    transform: rotateX(90deg) scale(0.3) translateZ(20px);
  }
  100% {
    transform: rotateX(90deg) scale(1) translateZ(0px);
  }
}

Stworzenie animacji wymaga odpowiedniego zgrania czasu, aby uzyskać efekt obracania się i migania. Same animacje są dość proste, i używać bardzo skutecznych metod.

Aby sprawdzić skuteczność tej animacji, otwórz Narzędzia deweloperskie w Chrome i zapisz wydajność podczas jej działania. Po wstępnym wczytaniu animacja nie aktywuje opcji Układ ani Renderowanie. i działa płynnie.

Podsumowanie

Na podstawie tych przykładów możesz zobaczyć, jak animowanie kilku właściwości za pomocą metod efektywnych może stworzyć bardzo fajne animacje. Domyślnie stosowane są wydajniejsze metody opisane w przewodniku po animacjach. możesz poświęcić więcej czasu na tworzenie pożądanego efektu i nie martwić się, że strona spowalnia wczytywanie strony.