43. Poznajemy właściwości animacji - animation CSS3
W poprzedniej części kursu CSS poznaliśmy do czego służy reguła @keyframes oraz dowiedzieliśmy się w jaki sposób zapisywać selektory czasu animacji, natomiast w tej części kursu przyjrzymy się bliżej właściwościom CSS, które należą do grupy animation.
Poniżej zostały ponownie wymienione oraz pokrótce opisane właściwości CSS należące do grupy animation.
animation-nameWłaściwość ta określa nazwę animacji, którą chcemy dodać do elementu HTML.animation-durationWłaściwość ta określa długość trwania animacji.animation-timing-functionWłaściwość ta określa tempo animacjianimation-delayWłaściwość ta określa opóźnienie lub przyspieszenie pierwszego startu animacji.animation-iteration-countWłaściwość ta określa ilość powtórzeń animacji.animation-directionWłaściwość ta określa kierunek powtarzania się oraz rozpoczęcia animacji.animation-fill-modeWłaściwość ta określa dodatkowy wygląd elementu HTML przed lub po wykonaniu się animacji.animation-play-stateWłaściwość ta wstrzymuje bądź wznawia wykonywanie się animacji.animationWłaściwość ta określa wszystkie wyżej wymienione właściwości CSS.
Aby wyżej wymienione właściwości CSS w jakikolwiek sposób oddziaływały na dany element HTML musimy pierw utworzyć jakąś przykładową animację CSS, za pomocą reguły @keyframes.
Tworzymy przykładową animację o nazwie szerokosc, której zapis został umieszczony poniżej:
@keyframes szerokosc
{
0% { width:150px; }
100% { width:350px; }
}Analizując zapis przedstawiony powyżej, możemy dojść do wniosku, że:
0% { width:150px; }Na początku animacji element HTML będzie posiadał wartość szerokości równą 150 pikseli (width:150px;), następnie...100% { width:350px; }...szerokość elementu HTML będzie powoli zmieniała swoją wartość, od początku trwania animacji, do ostatniej sekundy trwania animacji. W ostatniej sekundzie trwania animacji szerokość elementu HTML będzie wynosić 350 pikseli (width:350px;).
W ten sposób utworzoną animację szerokosc dodajemy do elementu HTML, za pomocą właściwości animation-name:szerokosc; Następnie określamy dla niej dodatkowe cechy wyglądu, dzięki właściwości animation-duration:5s; oraz animation-iteration-count:infinite;
W rezultacie otrzymujemy następujący efekt:


Kod dokumentu HTML:
Do naszego przykładowego elementu div, dzięki właściwości animation-name oraz wartości szerokosc, została dodana animacja szerokosc, którą utworzyliśmy za pomocą reguły @keyframes.
Domyślnie animacja CSS trwa zero sekund, czyli w ogóle nie rozpoczyna się, lecz nasza animacja szerokosc trwa pięć sekund, ponieważ do danego elementu div została dodana właściwość animation-duration wraz z wartością 5s.
Domyślnie animacja CSS wykonuje się tylko raz, lecz nasza animacja szerokosc wykonuje się nieskończoną ilość razy, za co jest odpowiedzialna właściwość animation-iteration-count oraz wartość infinite.
Gdy dodamy właściwość animation-delay wraz z wartością 3s, do naszego przykładowego elementu div, to nasza animacja będzie miała trzy sekundowe opóźnienie, jednak tylko przy jej pierwszym starcie (odśwież tę stronę, aby zobaczyć wspomniane opóźnienie).
Oprócz wspomnianego trzy sekundowego opóźnienia animacji, przy jej pierwszym rozpoczęciu, zobaczyliśmy jeszcze jeden dodatkowy efekt, który pojawił się, gdy dodaliśmy właściwość animation-delay wraz z wartością 3s, do naszego przykładowego elementu div. Tym efektem jest to, że wygląd elementu div, w czasie gdy jego animacja jest opóźniona, jest taki, jaki został określony przez nas w regule CSS, która została utworzona za pomocą selektora div, a nie jest taki, jaki został określony w pierwszym selektorze czasu animacji (0%), w regule @keyframes.
Wspomnianą sytuację możemy zmienić, gdy dodamy, do naszego przykładowego elementu div, właściwość animation-fill-mode wraz z wartością backwards.
Inny interesujący efekt uzyskamy, gdy do naszego przykładowego elementu div dodamy właściwość animation-delay, lecz tym razem z ujemną wartością, np. -2s.
Tym razem nasza animacja szerokosc nie została opóźniona, za pomocą właściwości animation-delay, lecz została przyspieszona o dwie sekundy, tzn. swój wygląd (na początku) ma taki, jak w drugiej sekundzie (efekt widoczny tylko przy pierwszym uruchomieniu animacji).
Jeżeli chodzi o tempo animacji, to możemy kontrolować je, za pomocą właściwości animation-timing-function. Jedną z wartości, jaką możemy podać wraz z właściwością animation-timing-function, jest wartość linear, która sprawia, że dana animacja ma stałe tempo.
Dla porównania, animacja szerokosc, która została umieszczona poniżej, ma domyślne tempo.
Kolejny ciekawy efekt uzyskamy, gdy do naszej powtarzającej się animacji szerokosc dodamy właściwość animation-direction wraz z wartością alternate, dzięki czemu dana animacja będzie powtarzać się zawsze w odwrotnym kierunku.
Ponadto, do jednego elementu HTML możemy dodać jednocześnie kilka animacji CSS i wcale nie musimy tworzyć dodatkowych reguł CSS. Możemy skorzystać z następującego zapisu:
Jak widzimy w zapisie, który został zaprezentowany powyżej, każde wartości, jakie ma mieć kolejna animacja CSS, oddzielamy od siebie przecinkiem.
Możemy skrócić nasz zapis, za pomocą właściwości animation (wszystkie wartości, należące do jednej animacji, oddzielamy spacją, a kolejną grupę takich wartości, oddzielamy przecinkiem).
Rezultat:


Kod HTML ostatniego przykładu został umieszczony poniżej:
Podczas poznawania efektu transition dowiedzieliśmy się z jakich selektorów CSS możemy skorzystać, aby "uruchomić" efekt przejścia w danym elemencie HTML. Były to następujące selektory CSS: :hover, :focus, :active, :target. Wspomniane selektory CSS mogą również być wykorzystane do dodania animacji CSS, do elementu HTML, w nieco bardziej dynamiczny sposób. Przykładowo, animacja przedstawiona poniżej, zostanie uruchomiona i będzie się wykonywać tylko w momencie gdy kursor naszej myszki będzie znajdował się nad danym elementem HTML, na którym aktualnie wykonuje się dana animacja. Za wspomniany efekt odpowiada reguła CSS, w której użyliśmy selektor :hover.
Kod HTML ostatniego przykładu został przedstawiony poniżej:
Oczywiście nasza ostatnia animacja przestanie się wykonywać w momencie gdy kursor naszej myszki nie będzie znajdował się już nad danym elementem HTML.
Ponadto selektor :hover oraz właściwość animation-play-state może przydać się nam, gdy będziemy chcieli, aby uruchomiona animacja została zatrzymana, gdy najdziemy kursorem myszki na dany element HTML.
Kod HTML ostatniego przykładu został przedstawiony poniżej:
Gdy dodajemy animację CSS3 do elementu HTML za pomocą właściwości, które do tego służą, czyli za pomocą właściwości należących do grupy animation, należy zwrócić uwagę na stopień ważności selektora.
Przykładowo gdy utworzymy jakąś regułę CSS za pomocą selektora identyfikatora, np. #styl-1 i określimy w niej wartość właściwości color, np. red, a następnie dodamy do tego samego elementu HTML animację CSS3, za pomocą selektora o niższym stopniu ważności, np. za pomocą selektora klasy .animacja_koloru, to animacja ta nie będzie mogła zmienić naszej przykładowej właściwości color:red;, ponieważ zasady określające stopień ważności selektorów nie pozwolą na wspomnianą zmianę. Sytuacja ta raczej rzadko może przytrafić się nam, ponieważ zazwyczaj określamy wygląd danego elementu HTML za pomocą jednej reguły CSS, lecz warto pamiętać o stopniu ważności selektorów.
W następnej części kursu CSS rozpoczniemy temat przekształceń w przestrzeni 2D oraz 3D.
Last updated