Starea animației CSS

CSS sa maturizat în multe moduri de-a lungul anilor, nu în ultimul rând în ceea ce privește animațiile CSS. Cu fiecare zi care trece mai mult și mai mulți dezvoltatori creează interfețe vii, respirație. În acest articol vom analiza starea animațiilor CSS, cum a crescut, ce este capabil astăzi și care acoperă câteva resurse și instrumente disponibile. Să ne mișcăm!

Creştere

Folosirea animației pe web crește, în mare parte datorită tranziție și  @keyframes adăugări la CSS. Odată a existat un moment în care animațiile și CSS nu s-au cunoscut unul pe altul, dar acest lucru nu este cazul astăzi. Articolele, tutorialele, cursurile premium și chiar liniile directoare pentru mișcare sunt mult mai accesibile acum decât au fost odată. combinarea @keyframes cu animaţie proprietate, împreună cu tranziție a dat in sfarsit dezvoltatorilor sansa de a crea o miscare corecta si de a da interfetelor o personalitate si o viata o data neconcepute. 

Din liniile directoare pentru materialele Google

Nu a existat niciodată un moment mai interesant pentru animațiile CSS și designul de interacțiune decât acum!

Animații de proprietate și cadre cheie

Implementarea actuală a animaţie proprietatea permite dezvoltatorilor să controleze durata, calendarul, întârzierea, numărul iterațiilor, direcția, modul de umplere și starea de redare. Partea de sincronizare permite, de asemenea, a etapele () funcţie. Această funcție specială de sincronizare rupe o animație sau o tranziție în segmente (ca o bandă de film), mai degrabă decât ca o tranziție continuă de la o stare la alta. Cadrele cheie permit dezvoltatorilor de mișcare să declare pozițiile utilizând dinla și chiar procentele de animat între valorile de proprietate declarate. Asta-i un început minunat, dar vom discuta într-un moment în care acesta este scurt.

Proprietate de tranziție

Apoi este gloriosul tranziție proprietate; o proprietate la fel de fantezie ca animaţie și una care ne permite să controlam viteza de animație atunci când schimbăm proprietățile. Procesul de tranziție între două state este de obicei denumit a tranziție implicită; un termen care descrie stările între starea inițială și cea finală, definite implicit de browser. În prezent, tranzițiile permit personalizarea proprietății, calendarul, durata și întârzierea.

 

Video-ul intro de mai sus este preluat de la Up și Running With Transitions de CSS de Craig Campbell.

Ce lipsește?

Animația CSS ar putea fi puternică în timp ce se află, dar încă nu are un aspect deosebit care animatorii doresc cel mai mult; controlul temporal-esque. Ceea ce vreau să spun sunt secvențe care pot fi influențate și manipulate pe baza timpului.

@frame-cheie de mutare-obiect de la proprietatea pozitiei initiale si valori la 2s face acest lucru asteptati-pana la 4s acest lucru se intampla la stop position property and values 

Sintaxa de mai sus nu există, ci vizează o imagine mai detaliată a experților de animație de pe web. GreenSock, de exemplu, este bine cunoscut pentru acest tip de secvențiere, dar, din păcate, se întâmplă doar în JavaScript. Nu ar fi minunat să ai și asta în CSS? așa cred.

 

Video de mai sus preluat de la Platforma de animație GreenSock: Primii pași de Craig Campbell.

Cu siguranță există capacitatea de a controla animaţie și tranziție evenimente prin utilizarea JavaScript pentru controlul granular al unei secvențe. Cu ajutorul JavaScript, dezvoltatorii pot detecta începutul fiecărei iterații noi de animație, atunci când are loc o animație, când animația se termină și același lucru este valabil și pentru evenimentele de tranziție.

Inspecția și instrumentarea browserului

Acestea sunt momente destul de incitante pentru uneltele dezvoltatorilor de browsere pentru a inspecta si ajusta animatiile CSS. Cele mai multe browsere (Firefox, Chrome) permit inspectarea animațiilor CSS în ceea ce privește Safari și Edge. Din ceea ce mi-a fost spus de o sursă care lucrează pentru Microsoft, inspecția animațiilor este ceva pe care echipa Microsoft vrea cu adevărat să o facă. Să sperăm că acest lucru este același pentru Safari.


În ceea ce privește browserele do suport animație de control avem următoarele abilități ...  

  • Inspectarea temporală care poate fi curățată.
  • Afișați animațiile aplicate la ::inainte de și ::după pseudo-elementele.
  • Regla keyframes proprietăți și valori în zbor.
  • Raportarea datelor keyframes numele.
  • Afișarea proprietăților animate.
  • Easing colectoare și editori curba Bezier.
  • Codificarea culorilor pentru a ști dacă evenimentul este o animație de tranziție, cheie sau web.
  • Controlați și modificați rata de redare.

În timp ce dezvoltatorii au destul de mult de ales în baza listei de mai sus, ei mai au nevoie de mai multe instrumente pentru animații în ceea ce privește interacțiunea cu utilizatorul. Acest lucru ar putea fi, de asemenea, cunoscut sub numele de interpolarea proprietăților, introducerea unei valori intermediare într-o serie prin calcularea ei din valorile cunoscute din jur; la fel ca atunci când treceți la o nouă valoare cu tranziții. Aceste animații dinamice / reactive pot începe oricând, sunt nedefinite și au durate variabile bazate pe interacțiunea utilizatorului. Ceva din nou, care nu poate fi depistat sau inspectat de la orice instrument de dezvoltare oferit de un browser în acest moment.

Viitorul

Viitorul arată strălucitor pentru animația CSS, deși cu tot ce-i privește specul, tinde să se miște încet. CSS mișcare-path modul, conținese va schimba si preferă redusă mișcare solicitarea media (care nu este încă standard și numai WebKit) reprezintă funcțiile actuale pentru animatorii CSS.

Traseul CSS de mișcare

Căile de mișcare permit dezvoltatorilor să animeze orice obiect grafic de-a lungul unei căi specificate de autor. Puteți defini o cale într-un mod foarte asemănător definit de SVG 1.1.

.elementul meu motion-path: path ('M93.9,46.4c9.3,9.5,13.8,17.9,23.5,17.9s17.5-7.8,17.5-17.5s-7.8-17.6-17.5-17.5c-9.7 , 0.1-13.3,7.2-22.1,17.1 c-8.9,8.8-15.7,17.9-25.4,17.9s-17.5-7.8-17.5-17.5s7.8-17.5,17.5-17.5S86.2,38.6,93.9,46.4 z '); mișcare-offset: 0; mișcarea-rotație: invers; 

 mișcare-path definește o cale pe care un element o va urma sau o va muta. Al nostru Mișcare de offset proprietatea este plasarea poziției elementului undeva pe cale. Proprietatea mișcare de rotație este direcția în care elementul "se confruntă" pe măsură ce se mișcă de-a lungul căii.

Check out aceste colecții de demo-uri pe CodePen de la Dan Wilson, care oferă exemple live mișcare-path capabilități.

  • Demo-urile mele de călătorie CSS de Dan Wilson
  • Traseul de mișcare CSS de Dan Wilson

Se va schimba

se va schimba proprietatea oferă o modalitate pentru autori de a sugera browserelor cu privire la tipul de schimbări care sunt așteptate pentru un element. Acest lucru permite browserului să configureze optimizările adecvate înainte ca elementul să fie efectiv schimbat.

.elementul meu will-change: transform; 

Acest tip de optimizare poate îmbunătăți timpul de încărcare perceput și aspectul unei pagini prin finalizarea lucrărilor scumpe înaintea timpului, înainte de a fi efectiv necesare. Spunând asta, sa sugerat că dezvoltatorii nu se aplică se va schimba la prea multe elemente, deoarece poate consuma resurse și poate cauza o încetinire a paginii.

Preferă mișcarea redusă

Această adăugare non-spec la WebKit creează stiluri care evită zonele mari de mișcare pentru utilizatorii care specifică o preferință pentru mișcarea redusă în Preferințe sistem.

@media (preferă-redusă-mișcare) .my-element animație: none; 

Aceasta este mai mult o situație de accesibilitate față de crearea reală a mișcării. Un interesant care să ia în considerare totuși și la unul pentru a verifica afară în timpul tău liber.

Conține

Acest modul CSS indică faptul că subtreea elementului este independentă de restul paginii, permițând astfel optimizările grele de către agenții utilizator atunci când sunt utilizați corect. Cea mai interesantă pentru animatorii CSS este a picta valoare care poate fi trecută.

.element-cu-mișcare conține: vopsea; 

În cazul în care elementul care se află în afara ecranului sau este ascuns, browserul poate ignora direct conținutul său, deoarece este garantat că este off-screen sau acoperit. Acest lucru oferă în cele din urmă valoare prin asigurarea unei conducte de randare mai rapide în timpul unei vopsele inițiale. Acesta este în prezent un proiect de lucru la W3C.

Resurse

Există o mulțime de modalități de a ține pasul cu animațiile CSS. Mai jos sunt câteva instrumente și resurse, inclusiv specificații care pot fi citite în timpul tău liber. Dacă știți despre alte resurse minunate și utile, vă rugăm să ne anunțați în comentarii și le vom adăuga în listă. Animație fericită!

Specificațiile W3C

  • Funcții de sincronizare CSS Nivelul 1
  • Calea de parcurs Modulul 1
  • CSS va schimba nivelul modulului 1
  • Modul de animații CSS de nivel 3

Învăţare

  • O introducere a începătorului în animația CSS de Cătălin Miron
  • Cursuri populare de animație CSS pe Envato Tuts+
  • CSS Animații Rocks
  • Cum să citiți curbele cubic-bezier de Val Head
  • O introducere în CSS Keyframes Animation pe revista Smashing
  • Web Animation Essentials: CSS Animații și tranziții de Rachel Nabors
  • Jank Free
  • Intrare la CSS transformări 3D de David DeSandro
  • Folosind CSS, pot anima ?
  • CSS Transitions and Animations. Modul CSS de rulare de către Ruslan Homyak
  • Ghidul de buzunar animații CSS de Val Head

Unelte

  • stylie de Jeremy Kahn
  • animate.css de Daniel Eden
  • Componente materiale pentru web
  • Sărăciile lui Andrey Sitnik
  • Animista de Ana Travas
  • AȘTEPTA! Animați-vă de Will Stone
  • cssanimate.com Generator de animație CSS3 Keyframes
  • cubic-bezier.com de Lea Verou
  • cssreference.io Un ghid vizual gratuit pentru CSS, de Jeremy Thomas
  • Propunere de UI de la ZURB
  • magic CSS3 Animații cu efecte speciale, de Christian Pucci
  • Hover.css de Ian Lunn
  • CSSYNTH de Bennett Feely