SVG – Scalar Vector Graphics

Mentre anche sul forum di Altervista si discute del futuro del linguaggio per il web, facciamo un piccolo viaggio temporale. La prima “versione” di web era quella usava molti elementi prefabbricati ed era fondamentalmente orientato al testo, fatto dovuto alla poca banda a disposizione. Da qui si è passato ad un web più colorato e sono stati introdotti i CSS, poi i contenuti multimediali.

Fondamentalmente però le pagine sono ancora costituite da box e la grafica viene realizzata colorando questi box con colori o immagini. Da molto tempo ormai i webmaster avrebbero voglia di avere a disposizione una strumento che permetta di uscire da questi noiosi canoni.

Nascono per queste esigenze Flash o Silverlight. Entrambi questi plugin permettono grafica vettoriale, streaming, interattività. Sono però degli strumenti chiusi, che causano problemi alla navigazione. Quali sono le alternative?

Negli anni si sono accumulate diverse soluzioni. Una, ad esempio, è questa libreria Javascript che permette di disegnare direttamente sulla pagina. Funziona bene e usa dei DIV posizionati in modalità assoluta. Con un po’ di impegno si potrebbe anche realizzare l’antialiasing.

Un’altra soluzione è il VML (Vector Markup Language), un  linguaggio markup che permette di realizzare grafica vettoriale. Nato in seno al W3C non ha mai incontrato fortuna tra gli sviluppatori.

Più recenti invece sono l’SVG (Scalable Vector Graphics) e il tag Canvas inserito nelle specifiche dell’HTML 5.

Partiamo dal secondo. Canvas è stato inventato dal team di Safari per realizzare alcune componenti. E’ pensato come un contenitore su cui è possibile disegnare via Javascript con una semplice API 2D. Le critiche a questo componente non mancano: permette una scarsa interattività, non si integra nel DOM, realizza un’immagine raster immodificabile. Insomma, un oggetto non molto utile.

SVG è invece uno standard W3C che offre un’area su cui è possibile disegnare degli elementi vettoriali. Gli elementi sono degli oggetti che è possibile manipolare in un secondo momento via API DOM e in questo modo è possibile realizzare delle animazioni utilizzando Javascript o SMIL (Synchronized Multimedia Integration Language), un linguaggio studiato proprio per questi scopi.

Purtroppo SVG non è mai stato preso molto in considerazione fino ad ora. Adobe aveva sviluppato un plugin per Explorer mentre solo recentemente i browser standard hanno cominciato a integrare SVG. In particolare volevo parlare del supporto SVG che da il browser Opera.

Opera permette di utilizzare SVG come una qualsiasi immagine. Possiamo quindi assegnare come sfondo del body un’immagine SVG, per esempio, per riempire lo sfondo con un gradiente col vantaggio di avere lo sfondo in pochi byte e in più anche il fatto che occuperà tutta la superficie senza nessuna degradazione della qualità. Opera non supporta l’attributo CSS3 border-radius, ma permette di utilizzare un’immagine SVG per ottenere lo stesso effetto, anzi, possiamo avere angoli di qualsiasi tipo, non solo rotondi. Soprattutto permetterebbe di fare a meno di Flash nella realizzazione di elementi grafici interattivi.

Due sono i problemi che affliggono SVG in questo momento. Il primo è la mancanza di unire facilmente una componente audio alla grafica. E’ vero che nasce per realizzare elementi grafica, ma con la possibilità dell’audio permetterebbe di sostituire Flash in molte applicazioni. In realtà il plugin Adobe prevedeva questa possibiltà. La seconda è che solo con la versione 2 si permetterà una formattazione migliore del testo. Attualmente è possibile definire un box, ma non la formattazione del testo contenuto e quindi realizzare interamente in SVG potrebbe avere dei limiti.

Infine un indubbio vantaggio: ogni oggetto SVG è open source, esattamente come l’HTML. Ciò permette di visionare il codice di altri per migliorare il proprio e quindi di migliorare il livello globale, nonché permettere ai motori di ricerca di indicizzarne il contenuto. Wow!files/files/

3 Commenti per “SVG – Scalar Vector Graphics”

Commento di
Helel
Inserito: 29/07/2009 15:15

Ciao,

Sono molto interessato alla parte in cui si afferma che è possibile integrare un immagine svg come sfondo (immagino di un div visto che non è specificato)

riporto di seguito il testo dell’articolo:
Opera permette di utilizzare SVG come una qualsiasi immagine. Possiamo quindi assegnare come sfondo del body un’immagine SVG, per esempio, per riempire lo sfondo con un gradiente col vantaggio di avere lo sfondo in pochi byte e in più anche il fatto che occuperà tutta la superficie senza nessuna degradazione della qualità. Opera non supporta l’attributo CSS3 border-radius, ma permette di utilizzare un’immagine SVG per ottenere lo stesso effetto, anzi, possiamo avere angoli di qualsiasi tipo, non solo rotondi. Soprattutto permetterebbe di fare a meno di Flash nella realizzazione di elementi grafici interattivi.

Cortesemente, mi indichereste un tutorial per fare questa operazione?
Non ne ho trovato nessuno e ho molte immagine realizzate in inkscape che vorrei provare a mettere come sfondo di pagine web.

Grazie per l’attenzione

Commento di
Caribe 1999
Inserito: 29/07/2009 20:46

Ho messo in piedi un esempio funzionante che puoi trovare qui: http://saitfainder.altervista.org/esempi/opera-svg/esempio.html
Come scritto nell’articolo l’uso di SVG come sfondo è una peculiarità di Opera dalla versione 9.5. Anche nell’esempio uso i DIV, ma non credo che l’uso non sia limitato a questo elemento.

Un paio di link:
* L’articolo che ho letto quando, tempo fa, uscì Opera 9.5 http://dev.opera.com/articles/view/new-development-techniques-using-opera-k/
* Le novità di Opera 10 http://dev.opera.com/articles/view/presto-2-2-and-opera-10-a-first-look

Commento di
giovanni
Inserito: 05/06/2014 12:32

Ottimo articolo! Ho trovato su altri articoli differenze tra svg e canvas che sembrano nuovi standard http://www.wellnet.it/blog/svg-o-canvas-il-tuo-html5 Anche se io preferisco gli svg, a patto che non si usino animazioni troppo pesanti e intensive

Commenta