CSS Animacija

CSS Animacija

Prvi korak u korišćenju animacije u CSS-u je svojstvo prelaza. Kada predefinisani prelazi nisu dovoljni ili jednostavno nisu pogodni, postoji CSS animacija.

Napomena: U ovom postu se ne koristi JavaScript! (čak i ja verujem da je ovo jasno)

Svojstvo animacije ima 2 dela: ključni okviri i svojstvo animacije. Ključni okviri definišu faze i stilove animacije i svojstvo animacije dodeljuje ključne okvire elementu i određuju kako će se animacija izvoditi na definisanom elementu.

Ključni okviri

Definisanjem ključnih okvira zapravo postavljate korake za svoju animaciju. Sintaksa za ovaj deo animacije je reč @keframes praćena nazivom animacije praćenim selektorima ključnog okvira i njegovim stilom.

 @keyframes animation-name{
     0%{CSS}
     50%{CSS}
     100%{CSS}
 }

Animacija se kreira postepenim prelaskom iz jednog u drugi stil koji postavljaju selektori ključnih okvira. Ovi selektori mogu imati vrednost 0% -100% (ili reči „from“ i „to“ koje znače 0% i 100%). Verujem da je savršeno jasno da 0% predstavlja početak animacije, a 100% kraj.

Svojstva koja možete animirati nisu beskonačna, pa postoji njihova lista.

Sada, najšokantnija stvar oko opcije @keiframes:
!important u CSS-u unutar ključnih okvira ne samo da čini vaš kod važnim, već takođe zanemaruje celu liniju koda ...!

Svojstvo animacije

Jednom kada se definišu ključni kadrovi, bolje se uverite da se rad isplati i koristite ih. Unutar selektora koji želite da animirate dodajte svojstvo animation. Ovo svojstvo je skraćenica za osam svojstava animacije.

animation
 =
 animation-name
 animation-duration
 animation-timing-function
 animation-delay
 animation-iteration-count
 animation-direction
 animation-fill-mode
 animation-play-state

Glavna svojstva koja treba dodati su animation-name i animation-duration. Bez anotation-name ne možete povezati animaciju sa ključnim kadrovima, a bez animation-duration trajanje će biti postavljeno na 0 i opet, nema animacije.

Ostala svojstva se koriste za bolje definisanje animacije. Animation-timing-function određuje krivu brzine animacije. Može se definisati unapred definisanim vrednostima (inear, ease, ease-in, ease-out, ease-in-out) ili prilagođeno definisati sa koracima ili kubnim-bezijerovim vrednostima.

Svojstvo animation-delay radi prilično isto kao u tranziciji - definiše početak animacije.

Animacija će se podrazumevano reprodukovati jednom. Pomoću animation-iteration-count možete ga promeniti u bilo koji broj ili ga definisati kao infinite.

Svojstvo animation-direction određuje ciklus animacije - da li će se reprodukovati unapred, unazad ili u alternativnim ciklusima. Opcije koje definišu ta stanja su normal, reverse, alternate (napred pa nazad) i alternate-reverse (unazad pa napred).

Svojstvo animation-fill-mode definiše stil elementa kada se animacija završava ili pre nego što je započela. Podrazumevano stanje je none i u ovom stanju animacija neće primeniti bilo koji stil na animirani element. Opcija both će postaviti prvu vrednost ključnog okvira elementu dok ne započne, a poslednju vrednost ključnog okvira nakon završetka. Opcije forwards i backwards definisane su odvojene opcije both.

I na kraju, sa animation-play-state možete animaciju pauzirati i reprodukovati ponovo. Dakle, ima 2 opcije, running (što je podrazumevano) i paused.

Čak je i svojstvo animation skraćenica za sve navedene opcije, uobičajeno je da se koristi odvojeno za animation-name i animation-duration i odvojeno za listu drugih svojstava

 animation: icon-animation 2s;
 animation-timing-function:ease;
 animation-delay: 5s;
 animation-iteration-count:infinite;
 animation-direction:normal;
 animation-fill-mode:both;
 animation-play-state:running;

Samo za zapis, elementu je moguće dodati više animacija.

I samo kratka napomena o prefiksima: sa svim svojstvima animacije i ključnim okvirima treba da koristite -webkit-. Za nekoliko specifičnih poznatih problema proverite CanIUse.

Primeri

Animacija za sebe zapravo nije stvar koja ima određenu svrhu u dizajnu. S druge strane, može se koristiti bilo gde i uvek će dodati vrednost. Reći ću da se specifična animacija (definisana ovim svojstvom) najviše koristi za specijalne efekte, a animacija definisana prelazom koristi se za češće elemente poput lebdenja i drugih stanja.

Takođe, neki efekti na efekat lebdenja, čak i samo linija sa neobičnim ponašanjem definišu se svojstvom animacije.

Dakle, ako trebate da dodate „ono nešto“ svom već gotovom dizajnu, dodajte poseban efekat u pozadini ili na neke određene elemente (loader, scroll, hover ...).

Lep blog sa mnogo lepšim postom sa najlepšim primerima CSS animacije: https://www.creativebloq.com/inspiration/css-animation-examples.

Takođe, obavezno proverite Animista gde ima puno unapred definisanih animacija koje lako možete koristiti.

Epilog

Svojstvo animacije je, po mom mišljenju, jedno od najviših svojstava CSS-a, ako ne zbog vau efekta, potrebno vam je za vaš „glavni CSS“ cilja. Ako ste zainteresovani za UX (ako ne, možda biste trebali), pogledajte veoma lep tekst o animaciji od tima Invisionapp.

Za redovan protok CSS-a u vašem sandučetu pretplatite se na naš bilten.