Inițierea unui începător în animația CSS

În prezent, din ce în ce mai multe site-uri folosesc animații, fie că sunt sub formă de GIF, SVG, WebGL, videoclipuri de fundal și așa mai departe. Atunci când este folosit în mod corespunzător, animația pe web aduce viață și interactivitate, adăugând un strat suplimentar de feedback și experiență pentru utilizatori.

În acest tutorial vă voi prezenta animațiile CSS; o modalitate extrem de performantă de a face lucruri care devin din ce în ce mai populare, deoarece se îmbunătățește suportul browserului. După ce ați acoperit elementele de bază, vom construi un exemplu rapid care va anima un element pătrat într-un cerc:

Opțiuni premium

Designerii de pe Envato Market au fost ocupați creând o gamă de animații CSS pentru a vă conecta la site-urile dvs. web, de la umbre la panglici, glisoare și multe altele.

CSS3 Shadow Pack pe Envato Market

De asemenea, puteți angaja un expert CSS pe Envato Studio pentru a vă ajuta cu o gamă largă de corecții și personalizări pentru proiectul dvs..

Experți CSS pe Envato Studio

O introducere în @frame-cheie și animație

Principala componentă a animațiilor CSS este @keyframes, regula CSS unde este creată animația. A se gandi la @keyframes ca etape de-a lungul unei cronologii. Interior @keyframes, puteți defini aceste etape, fiecare având o declarație de stil diferită.

Apoi, pentru a face animații CSS să funcționeze, trebuie să le legați @keyframes la un selector. Acest lucru va analiza treptat tot codul din interiorul lui @keyframes și schimba stilul inițial în noul stil, bazat pe etape.

Cadrele cheie @

Aici vom seta etapele de animație. Al nostru @keyframes proprietățile sunt:

  • Un nume ales de noi (tutsFade în acest caz).
  • etape: 0%-100%; din (egal cu 0%) și la (egal cu 100%).
  • Stilurile CSS: stilul pe care doriți să îl aplicați pentru fiecare etapă.

De exemplu:

@ cadre cheie tutsFade 0% opacity: 1;  100% opacitate: 0; 

sau:

@ keyframes tutsFade din opacity: 1;  la opacity: 0; 

sau stenografia:

@ keyframes tutsFade la opacity: 0; 

Codul de mai sus va aplica o tranziție la opacitatea unui element de la opacitate: 1 la opacitate: 0. Fiecare dintre abordările de mai sus va obține același rezultat final.

Animația

animaţie proprietate este folosit pentru a apela @keyframes în interiorul unui selector CSS. Animația poate avea mai multe proprietăți:

  • animație nume-: @keyframes nume (amintiți-ne că am ales tutsFade).
  • animație durată: durata lungimii, durata totală a animației de la început până la final.
  • animație-sincronizare-funcție: stabilește viteza de animație ( liniar | ușurință | ușurință. | ușurință ușurință în afară | cub-bezier ).
  • animație întârziere: întârzierea înainte de animația noastră va începe.
  • animație-iterație-count: De câte ori se va repeta prin animație.
  • animație direcția: vă oferă posibilitatea de a schimba direcția buclă, de la început până la sfârșit sau de la sfârșit la început sau ambele.
  • animație-fill-mode: specifică ce stiluri vor fi aplicate elementului atunci când animația noastră este finalizată ( nici unul | înainte | înapoi | ambii )

De exemplu:

.element animație-nume: tutsFade; animație-durată: 4s; animație-întârziere: 1s; animație-iterație-count: infinit; animație-temporizare-funcție: liniară; animație-direcție: alternativă; 

sau stenografie:

.element animație: tutsFade 4s 1s infinit liniar alternativ; 

Codul de mai sus va crea un efect intermitent, cu o întârziere de animație de 1 secundă, o durată de animație totală de 4 secunde, cu direcție alternativă și iterații de buclă liniară infinită.

Adăugarea prefixelor furnizorilor

În timp ce avem un proiect de lucru, trebuie să folosim prefixele specifice browserului pentru a asigura cel mai bun suport pentru browser. Prefixele standard se aplică:

  • Chrome & Safari: -WebKit-
  • Firefox: -Moz-
  • Operă: -o-
  • Internet Explorer: -Domnișoară-

Un animaţie proprietatea folosind prefixele furnizorilor va arata astfel: 

.element -webkit-animație: tutsFade 4s 1s infinit liniar alternativ; -moz-animație: tutsFade 4s 1s infinit liniar alternativ; -ms-animație: tutsFade 4s 1s infinit liniar alternativ; -o-animație: tutsFade 4s 1s infinit liniar alternativ; animație: tutsFade 4s 1s infinit liniar alternativ; 

alături de @keyframes:

@ -webkit-keyframes tutsFade / * stilul tău * / @ -moz-keyframes tutsFade / * stilul tău * / @ -ms-keyframes tutsFade / * stilul tău * / @ -o-keyframes tutsFade  * stilul tău * / @keyframes tutsFade / * stilul tău * /

Din motive de lizibilitate în timpul acestui tutorial, voi continua în continuare fără a utiliza prefixe, dar versiunea finală le va include și aș dori să vă încurajez să le utilizați în codul dvs. CSS.

Pentru a afla mai multe despre prefixele furnizorilor, puteți verifica http://css3please.com/, care este un site web excelent pentru resursele prefixelor furnizorilor.

Animații multiple

Puteți adăuga mai multe animații folosind un separator de virgule. Să spunem că vrem să adăugăm și o rotație suplimentară tutsFade element, am face acest lucru declarând extra @keyframes și apoi le obligăm la elementul nostru:

.element animație: tutsFade 4s 1s infinit liniar alternativ, tutsRotate 4s 1s infinit liniar alternativ;  @frame de chei tutsFade la opacity: 0;  @ cheile de chei tutsRotează to transform: rotate (180deg); 

Pătrat la cerc

Hai să intrăm și să creăm o tranziție de formă simplă; o animație pătrată în cerc utilizând principiile de mai sus. Vom avea cinci etape în total și pentru fiecare etapă vom defini o rază de graniță, o rotație și o culoare de fundal diferită de elementul nostru. Vorbește destul, să mergem la codificare.

Element de bază

Mai întâi, să creăm marcajul, un element de animat. Nici măcar nu ne vom deranja cu numele de clasă, pentru moment vom folosi o div divizie:

Apoi, utilizând un selector de elemente (div ), Adăugați stilul implicit la div:

div width: 200px; înălțime: 200px; fundal-culoare: coral; 

Declararea cadrelor cheie

Acum să ne pregătim @keyframes, pe care o vom apela pătrat-to-cerc, și cele cinci etape

@ cadre cheie pătrat-la-cerc 0%  25%  50%  75%  100% 

Trebuie să definim câteva stări în aceste etape, deci să începem prin dictarea border-radius pentru fiecare colț al pătratului:

@ -webkit-keyframes pătrat-la-cerc 0% border-radius: 0 0 0 0;  25% raza de graniță: 50% 0 0 0;  50% raza de graniță: 50% 50% 0 0;  75% raza de graniță: 50% 50% 50% 0;  100% raza de graniță: 50%; 

În plus, putem declara altfel culoare de fundal pentru fiecare etapă.

@frame-cheie pătrat-la-cerc 0% raza de graniță: 0 0 0 0; fundal: coral;  25% raza de graniță: 50% 0 0 0; fundal: darksalmon;  50% raza de graniță: 50% 50% 0 0; fundal: indianred;  75% raza de graniță: 50% 50% 50% 0; fundal: lightcoral;  100% raza de graniță: 50%; fundal: darksalmon; 

Pentru a lovi cu adevărat ideea acasă, să mergem dincolo border-radius și culoare de fundal prin rotirea div și adăugarea unui mic interes vizual.

@frame-cheie pătrat-la-cerc 0% raza de graniță: 0 0 0 0; fundal: coral; transforma: rotate (0deg);  25% raza de graniță: 50% 0 0 0; fundal: darksalmon; transforma: roti (45deg);  50% raza de graniță: 50% 50% 0 0; fundal: indianred; transforma: roti (90deg);  75% raza de graniță: 50% 50% 50% 0; fundal: lightcoral; transforma: rotate (135deg);  100% raza de graniță: 50%; fundal: darksalmon; transforma: rotate (180deg); 

Aplicați animația

După ce am definit animația pătrat-cerc, trebuie să o aplicăm divului:

div width: 200px; înălțime: 200px; fundal-culoare: coral; animație: pătrat-la-cerc 2s 1s alternativă infinită; 

Aici vedeți că am adăugat o stenogramă animaţie proprietate, care prevede:

  • Numele de animație este pătrat-to-cerc.
  • Durata de animație este 2s.
  • Întârzierea de animație este 1s.
  • Numărul de iterații de animație este infinit, astfel încât va continua pe termen nelimitat.
  • Și direcția de animație este alterna, așa că va juca de la început până la sfârșit, apoi înapoi la început, apoi din nou până la sfârșit și așa mai departe. 

Utilizați funcția Timp-Funcție 

O ultima valoare pe care o putem adauga la proprietatea animatiei este animație-sincronizare-funcție. Aceasta va defini viteza, accelerația și decelerarea mișcării noastre. Această funcție poate fi o valoare foarte detaliată, care este dificilă pentru a calcula manual, dar există o mulțime de site-uri gratuite care oferă resurse și personaliza live pentru funcțiile de sincronizare a animației.

Un astfel de instrument este instrumentul de animație CSS Easing, așa că hai să folosim asta pentru a calcula funcția de sincronizare.

Aș dori să adaug un elastic efectul nostru pătrat-to-cerc animație, folosind o funcție cubică-bezier.

După ce ați jucat cu mânerele și ați generat un fel de curbă bezier, actualizați valoarea funcției de temporizare a animației utilizând fragmentul furnizat.

div width: 200px; înălțime: 200px; fundal-culoare: coral; animație: pătrat-în-cerc 2s 1s infinit cubic-bezier (1, .015, .295,1,225) alternativ; 

Codul final, fără a utiliza prefixele furnizorilor ( -WebKit- , -Moz-, -Domnișoară-, -o- ) este după cum urmează:

div width: 200px; înălțime: 200px; fundal-culoare: coral; animație: pătrat-la-cerc 2s .5s infinit cubic-bezier (1, .015, .295, .225) alternativ;  @frame-cheie pătrat-în-cerc 0% radius-limită: 0 0 0 0; fundal: coral; transforma: rotate (0deg);  25% raza de graniță: 50% 0 0 0; fundal: darksalmon; transforma: roti (45deg);  50% raza de graniță: 50% 50% 0 0; fundal: indianred; transforma: roti (90deg);  75% raza de graniță: 50% 50% 50% 0; fundal: lightcoral; transforma: rotate (135deg);  100% raza de graniță: 50%; fundal: darksalmon; transforma: rotate (180deg); 

Inca un lucru

Totul funcționează bine în browserele moderne, dar Firefox are un obicei urât de transformare a obiectelor în mod necorespunzător. Uitați-vă la aceste linii zimțate pentru a vedea ce vreau să spun:

Din fericire, există o soluție pentru acest lucru. Adăugați următoarea schiță transparentă la div și Firefox va face lucrurile perfect!

schiță: 1px solid transparent;

Concluzie

Asta e! Am folosit sintaxa de animație CSS pentru a crea o animație simplă, repetată.

Suport pentru browser

Pentru informații actualizate cu privire la suportul pentru browsere pentru animația CSS, consultați Utilizarea ... dar pe scurt, browserele de sprijin includ: Firefox 5+, IE 10+, Chrome, Safari 4+, Opera 12+.

Resurse:

  • CSS3 Vă rog
  • Ceaser - CSS Easing Animation Tool
  • CSS3 Animații pe Envato Market