Lo stato dell'animazione CSS

I CSS sono maturati in molti modi nel corso degli anni, non ultimo in termini di animazioni CSS. Ogni giorno che passa, sempre più sviluppatori sviluppano interfacce viventi e affascinanti. In questo articolo vedremo lo stato delle animazioni CSS, come è cresciuto, di cosa è capace oggi e comprende alcune risorse e strumenti disponibili. Muoviamoci!

Crescita

L'uso dell'animazione sul web sta aumentando, in gran parte a causa del transizione e  @keyframes aggiunte al CSS. C'era una volta in cui animazioni e CSS non si conoscevano, ma non è il caso oggi. Articoli, tutorial, corsi premium e persino linee guida sul movimento sono ora molto più accessibili di quanto non fossero una volta. combinando @keyframes con il animazione proprietà, insieme a transizione ha finalmente dato agli sviluppatori la possibilità di creare correttamente il movimento e di conferire alle interfacce personalità e vita una volta non considerate. 

Dalle linee guida sulla movimentazione dei materiali di Google

Non c'è mai stato un momento più eccitante per le animazioni CSS e il design di interazione di adesso!

Proprietà di animazione e fotogrammi chiave

Attuale implementazione del animazione La proprietà consente agli sviluppatori di controllare la durata, i tempi, il ritardo, il conteggio delle iterazioni, la direzione, la modalità di riempimento e lo stato di riproduzione. La parte di temporizzazione consente anche di a (gradini) funzione. Questa speciale funzione di temporizzazione interrompe un'animazione o una transizione in segmenti (come una striscia di pellicola), piuttosto che come una transizione continua da uno stato all'altro. I keyframe consentono agli sviluppatori di movimento di dichiarare le posizioni usando a partire dala e persino percentuali da animare tra i valori delle proprietà dichiarate. È un ottimo inizio, ma discuteremo in un momento in cui non ci sarà.

Proprietà di transizione

Poi c'è il glorioso transizione proprietà; una proprietà tanto elegante quanto animazione e uno che ci consente di controllare la velocità dell'animazione quando si cambiano le proprietà. Il processo di transizione tra due stati è in genere chiamato a transizione implicita; un termine che descrive gli stati tra gli stati iniziale e finale, implicitamente definiti dal browser. Le transizioni consentono attualmente la personalizzazione della proprietà, i tempi, la durata e il ritardo.

 

Il video introduttivo qui sopra è tratto da Up and Running With CSS Transitions di Craig Campbell.

Cosa manca?

L'animazione CSS potrebbe essere potente così com'è, ma manca ancora un aspetto particolare che gli animatori desiderano di più; controllo cronologico. Ciò che intendo per questo sono sequenze che possono essere influenzate e manipolate in base al tempo.

@keyframes move-object from proprietà posizione iniziale e valori in 2s fai questo wait-until 4s this happens to stop position property and values 

La sintassi sopra non esiste, ma dipinge un'immagine in modo più dettagliato di ciò che gli esperti di animazione sul web bramano. GreenSock, ad esempio, è ben noto per questo tipo di sequenziamento, ma sfortunatamente accade solo in JavaScript. Non sarebbe bello avere anche questo in CSS? credo di si.

 

Video in alto tratto dalla piattaforma di animazione GreenSock: Primi passi di Craig Campbell.

C'è certamente la capacità di controllare animazione e transizione eventi attraverso l'uso di JavaScript per un ulteriore controllo granulare di una sequenza. Con JavaScript, gli sviluppatori possono rilevare l'inizio di ogni nuova iterazione dell'animazione, quando si verifica un'animazione, quando termina l'animazione e lo stesso vale per gli eventi di transizione.

Controllo e strumenti del browser

Questi sono tempi piuttosto eccitanti per gli strumenti di sviluppo del browser per ispezionare e regolare le animazioni CSS. La maggior parte dei browser (Firefox, Chrome) consente l'ispezione delle animazioni CSS in relazione a Safari e Edge. Da quello che mi è stato detto da una fonte che lavora per Microsoft, l'ispezione delle animazioni è qualcosa che il team Microsoft vuole davvero fare. Speriamo che questo sia lo stesso per Safari.


Per quanto riguarda i browser che fare supportare l'ispezione dell'animazione abbiamo le seguenti abilità ...  

  • Controllo cronologico che può essere rimosso.
  • Mostra animazioni applicate a ::prima e ::dopo pseudo-elementi.
  • Regolare i fotogrammi chiave proprietà e valori al volo.
  • Segnalazione di i fotogrammi chiave nomi.
  • Visualizzazione di proprietà animate.
  • Raccoglitori facilitati e editor di curve bézier.
  • Codifica dei colori per sapere se l'evento è una transizione, un fotogramma chiave o un'animazione web.
  • Controlla e modifica la velocità di riproduzione.

Mentre gli sviluppatori hanno un bel po 'di scelta sulla base dell'elenco sopra, richiedono ancora più strumenti sulle animazioni riguardanti l'interazione dell'utente. Questo potrebbe anche essere conosciuto come interpolazione di proprietà, l'inserimento di un valore intermedio in una serie calcolandolo dai valori noti circostanti; molto simile a quando si passa a un nuovo valore con le transizioni. Queste animazioni dinamiche / reattive possono iniziare in qualsiasi momento, sono indefinite e hanno durate variabili basate sull'interazione dell'utente. Qualcosa ancora una volta che non può essere sottoposto a debug o ispezioni da qualsiasi strumento di sviluppo fornito da un browser in questo momento.

Il futuro

Il futuro sembra luminoso per l'animazione CSS, sebbene con tutte le specifiche relative tende a muoversi lentamente. Il CSS movimento-path modulo, contenerecambierà e il preferisce ridotto movimento media query (non ancora standard e solo WebKit) sono le funzionalità imminenti per gli animatori CSS.

Percorso di movimento CSS

I percorsi di movimento consentono agli sviluppatori di animare qualsiasi oggetto grafico lungo un percorso specificato dall'autore. È possibile definire un percorso in modo molto simile definito da SVG 1.1.

.mio-elemento percorso del movimento: percorso ('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 '); offset di movimento: 0; motion-rotation: reverse; 

Il movimento-path definisce un percorso che un elemento seguirà o passerà sopra. Nostro movimento-offset proprietà è il posizionamento posizione dell'elemento da qualche parte sul percorso. La proprietà motion-rotazione è la direzione in cui l'elemento "si affaccia" mentre si muove lungo il percorso.

Dai un'occhiata a queste raccolte di demo su CodePen di Dan Wilson che forniscono esempi dal vivo movimento-path capacità.

  • Le mie demo di Motion Path CSS di Dan Wilson
  • CSS Motion Path di Dan Wilson

Cambierà

Il cambierà La proprietà fornisce agli autori un modo per suggerire ai browser il tipo di modifiche previste per un elemento. Ciò consente al browser di configurare le ottimizzazioni appropriate in anticipo prima che l'elemento venga effettivamente modificato.

.my-element will-change: transform; 

Questo tipo di ottimizzazione può migliorare il tempo di caricamento e il layout di una pagina percepiti completando un lavoro costoso prima del tempo necessario. Detto questo, è suggerito che gli sviluppatori non si applicano cambierà a troppi elementi in quanto può consumare risorse e causare il rallentamento di una pagina.

Preferisce movimento ridotto

Questa aggiunta non specifica a WebKit crea stili che evitano ampie aree di movimento per gli utenti che specificano una preferenza per il movimento ridotto Preferenze di Sistema.

@media (preferisce-a movimento ridotto) .my-element animazione: nessuna; 

Questa è più una situazione di accessibilità rispetto alla creazione di movimento reale. Uno interessante da considerare se e uno da verificare a vostro piacimento.

Contenere

Questo modulo CSS indica che la sottostruttura dell'elemento è indipendente dal resto della pagina, consentendo in tal modo pesanti ottimizzazioni da parte dei programmi utente quando utilizzati correttamente. Il più interessante per gli animatori CSS è il dipingere valore che può essere passato.

.element-with-motion contiene: vernice; 

Se l'elemento che lo contiene è off-screen o oscurato, il browser può saltare direttamente a dipingere i suoi contenuti in quanto sono garantiti come off-screen o oscurati. Questo alla fine fornisce valore assicurando una pipeline di rendering più veloce durante una verniciatura iniziale. Attualmente è ancora una bozza di lavoro al W3C.

risorse

Ci sono molti modi per tenere il passo con le animazioni CSS. Di seguito sono riportati alcuni strumenti e risorse tra cui le specifiche da leggere a vostro piacimento. Se conosci altre fantastiche e utili risorse, faccelo sapere nei commenti e li aggiungeremo alla lista. Felice animazione!

Specifiche W3C

  • Funzioni di cronometraggio CSS Livello 1
  • Modulo del percorso di movimento Livello 1
  • CSS cambierà modulo di livello 1
  • Modulo Animazioni CSS Livello 3

Apprendimento

  • Introduzione di un principiante all'animazione CSS di Catalin Miron
  • 9 Corsi popolari sull'animazione CSS su Envato Tuts+
  • CSS Animation Rocks
  • Come leggere le curve cubico-bezier di Val Head
  • Introduzione ai fotogrammi chiave CSS Animazione su Smashing Magazine
  • Essentials di animazione Web: animazioni e transizioni CSS di Rachel Nabors
  • Jank gratuito
  • Introduzione alle trasformazioni CSS 3D di David DeSandro
  • Usando i CSS, posso animare ?
  • Transizioni CSS e animazioni. Modulo Motion Path CSS di Ruslan Homyak
  • La guida tascabile delle animazioni CSS di Val Head

Utensili

  • Stylie di Jeremy Kahn
  • animate.css di Daniel Eden
  • Componenti materiali per il web
  • Facilitazioni di Andrey Sitnik
  • Animista di Ana Travas
  • ASPETTARE! Animare di Will Stone
  • cssanimate.com CSS3 Keyframes Generatore di animazioni
  • cubic-bezier.com di Lea Verou
  • cssreference.io Una guida visiva gratuita per CSS, di Jeremy Thomas
  • Motion UI di ZURB
  • magic CSS3 Animazioni con effetti speciali, di Christian Pucci
  • Hover.css di Ian Lunn
  • CSSYNTH di Bennett Feely