Anche se l'animazione di SVG con CSS potrebbe essere più comoda per la persona media front-end, SVG ha un altro modo per eseguire l'animazione incorporata direttamente nella sintassi SVG stessa. Questo è esattamente ciò che trattiamo in breve in questo video, ma se vuoi una guida di riferimento completa, dai un'occhiata a A Guide to SVG Animations (SMIL) di Sara Soueidan proprio qui su CSS-Tricks.
SMIL è l'acronimo di Synchronized Multimedia Integration Language. A quanto ho capito, questa è una "cosa" tutta per sé che sembra essere incorporata in SVG. Ma SVG ha alcune delle sue aggiunte simili a SMIL. Mi riferirò a tutto come SMIL anche se sono sicuro di essere tecnicamente sbagliato a volte.
Per animazioni molto semplici, non importa se lo fai in SMIL o CSS, farà la stessa cosa all'incirca allo stesso livello di difficoltà. Alcune cose potrebbero anche essere più facili in CSS. Ma qui ci sono alcune cose in cui SMIL è la strada da percorrere:
- Devi animare qualcosa che i CSS non possono toccare. Come la forma di un poligono o di un percorso.
- Si desidera utilizzare gli eventi di influenzare l'animazione, come un
click
omouseover
o qualcosa del genere. - Vuoi fare animazioni additive, come animare da ovunque ti trovi ora un altro x pixel.
- Vuoi avere animazioni che si riferiscono direttamente ad altre animazioni, ad esempio, quando questa animazione finisce, inizia la prossima animazione (senza manipolare manualmente le durate).
- Sono sicuro che ce ne sono di più.
La sintassi all'inizio sembra intimidatoria, ma è davvero abbastanza facile, lo prometto. Ecco un esempio di base:
Guarda Pen jAipI di Chris Coyier (@chriscoyier) su CodePen.
La cosa "shape morphing" è davvero unica con SMIL, quindi ecco un esempio migliore di quello strano che abbiamo fatto nel video:
Vedi il pulsante Morph forma penna di Chris Coyier (@chriscoyier) su CodePen.
In quella demo, gli eventi sono gestiti da JavaScript invece che da SMIL. È solo bello sapere che puoi farlo anche tu. I trigger di eventi SMIL sono interessanti, ma la cosa che deve essere cliccata deve essere in quell'SVG piuttosto che in qualsiasi altra parte del DOM.