{"id":13,"date":"2010-02-13T18:51:08","date_gmt":"2010-02-13T17:51:08","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/usare-svg-per-un-background-flessibile-scalabile-e-divertente-parte-ii\/"},"modified":"2010-02-13T18:51:08","modified_gmt":"2010-02-13T17:51:08","slug":"usare-svg-per-un-background-flessibile-scalabile-e-divertente-parte-ii","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/usare-svg-per-un-background-flessibile-scalabile-e-divertente-parte-ii\/","title":{"rendered":"Usare SVG per un background flessibile, scalabile e divertente, Parte II"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/top2.jpg\" border=\"0\" width=\"170\" height=\"173\" align=\"right\" alt=\"illustrazione per SVG parte II\" \/><\/p>\n<p>Nella <a href=\"articoli\/1-numero-zero-febbraio-2010\/2-using-svg-for-flexible-scalable-and-fun-backgrounds-part-i\" title=\"Parte I\">Parte I<\/a>, ho analizzato il supporto dei browsers, quando potete usare SVG (e quando non dovreste) e l&#8217;accessibilit\u00e0. In questo articolo, esaminer\u00f2 la tecnologia che sta dietro l&#8217;uso di SVG per il design del vostro sito. Esploreremo come  incorporare SVG in maniera &#8220;cross-browser friendly&#8221;, incluso l&#8217;utilizzo di SVGWeb per essere sicuri che SVG verr\u00e0 visualizzato in Internet Explorer. Inoltre, coprir\u00f2 anche l&#8217;unica caratteristica che rende SVG l&#8217;ideale per gli sfondi delle pagine: la scalabilit\u00e0.<br \/>Ovviamente, per  usare SVG dovete <span class=\"italico\">avere<\/span> SVG. In questo articolo, introdurr\u00f2 Inkscape, un tool gratis e open source che fa un lavoro fantastico nel convertire le bitmap in SVG. Parler\u00f2 anche dei molti posti online in cui trovare SVG da usare liberamente.<\/p>\n<div class=\"paragrafo\">\n<h2>Aggiungere SVG alle Pagine Web<\/h2>\n<p>Ci sono molti modi per aggiungere SVG ad una pagina web, sebbene solo alcuni offrano compatibilit\u00e0 cross-browser.<br \/>Il primo metodo consiste nell&#8217;usare l&#8217;elemento <span class=\"courier\">object<\/span> e fare riferimento ad un file SVG esterno. Questo approccio \u00e8  attualmente il metodo pi\u00f9 usato per aggiungere SVG ad una pagina  distribuita come HTML.<br \/>Per aggiungere SVG usando l&#8217;elemento <span class=\"courier\">object<\/span>, scrivete del markup come il seguente, che ho copiato dal sito di <a href=\"http:\/\/codedread.com\/\" title=\"Jeff Schiller\">Jeff Schiller<\/a> (citato nella Parte I):<\/p>\n<pre>\n<code>\n&lt;object type=\"image\/svg+xml\"\n   width=\"100\" height=\"100\" style=\"float:right\"\n   data=\"http:\/\/blog.codedread.com\/clipart\/apple.svgz\"&gt;\n &lt;span\/&gt;&lt;\/object&gt;\n<\/code>\n<\/pre>\n<p>Settate il type allo SVG MIME type: &#8220;image\/svg+xml&#8221;. Fornite la larghezza (width) e l&#8217;altezza (height) (potete usare uno stylesheet), e settate l&#8217;attributo src al percorso del file SVG. In questo esempio, Jeff usa la versione gzipped di SVG, per risparmiare molta pi\u00f9 banda (ulteriori dettagli sulla creazione di file SVG verranno dati pi\u00f9 avanti). Per vedere l&#8217;esempio grafico, aprite il file SVG in Firefox, Opera, Safari o Chrome.<\/p>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example1.html\" title=\"esempio 1\">Esempio 1<\/a> mostra un oggetto SVG aggiunto ad una pagina web tramite l&#8217;elemento <code>object<\/code>.<\/p>\n<p>Attualmente, l&#8217;utilizzo dell&#8217;elemento <code>object<\/code> \u00e8 l&#8217;unico approccio nativo che funziona in HTML. Mano a mano che il supporto per HTML5 aumenta, sempre pi\u00f9 browsers supporteranno SVG incorporato direttamente in HTML.<\/p>\n<p>Un altro vantaggio di questo approccio \u00e8 che potete usare files SVG esistenti e non dovete toccare lo XML.<\/p>\n<p>Tuttavia, uno svantaggio nell&#8217;uso dell&#8217;elemento <code>object<\/code> \u00e8 che allungare ed allargare l&#8217;elemento <code>object<\/code> fino a coprire un&#8217;intera pagina pu\u00f2 essere problematico, a seconda del browser. Ad esempio, Safari\/Webkit attualmente non crea un background trasparente per l&#8217;elemento <code>object<\/code>.<\/p>\n<p>Gli svantaggi dell&#8217;usare object ci portano ad un secondo modo per includere SVG nel design di una pagina: i CSS. Con i CSS potete usare un file SVG al posto di un JPEG o di un PNG nei settings della background-image:<\/p>\n<pre>\n<code>\nbody {<br \/> background-image: url(redcircle.svg);<br \/>}\n<\/code>\n<\/pre>\n<p>L&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example2.html\" title=\"Esempio 2\">Esempio 2<\/a> mostra l&#8217;approccio con i CSS per aggiungere SVG come elemento di background. Questa sarebbe una buona opzione, senonch\u00e9 Firefox attualmente non supporta SVG nei CSS. Fintanto che sar\u00e0 cos\u00ec, questa non sar\u00e0 una valida opzione.<\/p>\n<p>Potete anche usare SVG in un elemento <code>image<\/code>, ma questo ha ancora meno supporto che SVG nei CSS.<\/p>\n<p>L&#8217;ultimo approccio per aggiungere SVG ad una pagina web \u00e8 quello che io uso maggiormente. Semplicemente, incorporate SVG direttamente nella pagina, usando l&#8217;elemento SVG. Potete farlo in due modi: potete inviare le vostre pagine web come application\/xhtml+xml, funzionante in Chrome, Firefox, Safari, Opera e vari altri browser (ma non IE), come mostrato nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example3.xhtml\" title=\"Esempio 3\">Esempio 3<\/a>; oppure potete incorporare l&#8217;elemento SVG nell&#8217;HTML, inviando la pagina come HTML, cosa permessa in HTML5, come mostrato nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example4.html\" title=\"Esempio 4\">Esempio 4<\/a>. Notate tuttavia che SVG incorporato in HTML funziona solo con Firefox 3.6 al momento in cui scrivo questo articolo. Inoltre, notate che il validatore HTML5 genera un errore quando incorporate SVG in HTML5 &#8211; non perch\u00e9 lo SVG sia un errore, ma perch\u00e9 soltanto un browser al momento supporta questa nuova funzionalit\u00e0.<\/p>\n<p>Inserire l&#8217;SVG nel XHTML \u00e8 tanto semplice quanto copiare ed incollare un elemento SVG da un file. Tipicamente un file potrebbe avere un inizio, come il seguente:<\/p>\n<pre>\n<code>\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;svg viewBox=\"0 0 400 253\" \n version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" \n preserveAspectRatio=\"none\"&gt;\n<\/code>\n<\/pre>\n<p>oppure:<\/p>\n<pre>\n<code>\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?&gt;\n&lt;!-- Created with Inkscape (http:\/\/www.inkscape.org\/) --&gt;\n&lt;svg xmlns:svg=\"http:\/\/www.w3.org\/2000\/svg\"\n  xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n  xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\"\n  xmlns:inkscape=\"http:\/\/www.inkscape.org\/namespaces\/inkscape\"\n  version=\"1.0\" \n  viewBox = \"0 0 725 828\"  \n  preserveAspectRatio=\"none\"\n  id=\"svg2\"&gt;\n<\/code>\n<\/pre>\n<p>La parte che dovrete copiare \u00e8 il contenuto del file tra i tag SVG di apertura e chiusura, inclusi i tag stessi. Assicuratevi di non dimenticare il tag SVG di chiusura.<\/p>\n<p>Potete copiare l&#8217;oggetto SVG ovunque nella pagina, ma raccomando di copiarlo in un elemento div verso la fine della pagina, come mostrato nell&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example3.xhtml\" title=\"Esempio 3\">Esempio 3<\/a>. Potete anche posizionarlo come immagine di sfondo usando i CSS ed assicurandovi che sia dietro a tutti gli altri elementi della pagina usando la propriet\u00e0 z-index.<\/p>\n<p>Utilizzate la stessa procedura per inserire SVG in un documento HTML. Tuttavia, come citato prima, l&#8217;unico browser che supporta SVG in HTML \u00e8 al momento Firefox 3.6. Se avete intenzione di inserire SVG in HTML, raccomando di usare una libreria come SVGWeb. Non solo potete inserire SVG in HTML con SVGWeb, ma il risultato dovrebbe venir visualizzato anche in IE, a condizione che il plug-in per Flash sia installato.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Usare SVGWeb<\/h2>\n<p>Usare SVGWeb \u00e8 molto semplice &#8211; basta scaricare il file zippato, che include le demo e il sorgente, ed aggiungere la libreria JavaScript alla pagina. Assicuratevi solamente che sia posizionata prima di qualunque altra libreria JavaScript:<\/p>\n<pre>\n<code>\n&lt;script src=\"src\/svg.js\" data-path=\"src\/\"&gt;&lt;\/script&gt;\n<\/code>\n<\/pre>\n<p>SVGWeb consiste di diverse librerie, quindi dovrete o assicurarvi che le altre librerie siano nello stesso percorso della libreria svg.js primaria oppure dovrete fornire l&#8217;attributo data customizzabile di HTML5, <code>data-path<\/code>. Inoltre, assicuratevi di caricare tutti i contenuti della directory SVGWeb src in cui SVGWeb sar\u00e0 usata sul vostro sito web.<\/p>\n<p>Una volta caricate le librerie SVGWeb e aggiunti i tag script, incorporate SVG come fareste usando XHTML. E&#8217; importante racchiudere il tag SVG con un elemento script:<\/p>\n<pre>\n<code>\n&lt;script type=\"image\/svg+xml\"&gt;\n&lt;svg ...&gt;...&lt;\/svg&gt;\n&lt;\/script&gt;\n<\/code>\n<\/pre>\n<p>Se la pagina \u00e8 inviata come XHTML, inserite un&#8217;impostazione CDATA:<\/p>\n<pre>\n<code>&lt;script type=\"image\/svg+xml\"&gt;&lt;![CDATA[\n   &lt;svg ...&gt;...&lt;\/svg&gt;\n ]]&gt;&lt;\/script&gt;\n<\/code>\n<\/pre>\n<p>L&#8217;uso  di SVGWeb non solo assicura che SVG venga visualizzata in HTML, ma anche che venga visualizzata in IE. Voi aggiungete la libreria e il tag script che lo contiene e SVGWeb si prende cura del resto. Carica l&#8217;oggetto SVG\/XML, lo rende accessibile per lo scripting ed assicura che  SVG venga visualizzato indipendentemente dal browser.<\/p>\n<p>Tuttavia, c&#8217;\u00e8 un piccolo appunto da fare. La libreria SVGWeb, come la maggior parte delle librerie SVG cross-browser, richiede che JavaScript sia attivato. Inoltre, la libreria SVGWeb aumenta l&#8217;uso di banda e quando IE \u00e8 usato per accedere alla pagina, viene usata ulteriore banda per il componente Flash della libreria.<\/p>\n<p>Sto mostrando l&#8217;uso di SVGWeb con SVG inline, ma SVGWeb funziona anche con l&#8217;elemento <code>object<\/code>.<\/p>\n<p>A prescindere dal fatto che usiate un elemento <code>object<\/code> o incorporiate direttamente SVG, se volete che l&#8217;immagine si ridimensioni in accordo al contenuto della pagina, dovete usare un posizionamento assoluto per l&#8217;oggetto SVG o per object. Se volete che SVG si ridimensioni alla dimensione dell&#8217;intera pagina, anche se il contenuto della pagina si estende oltre alla parte visualizzata con la finestra del browser, aggiungete l&#8217;oggetto SVG ad un contenitore pi\u00f9 esterno che comprenda anche il contenuto della pagina. Assicuratevi che il contenuto della pagina e l&#8217;altro container siano posizionati relativamente per assicurarvi che l&#8217;oggetto SVG cambi proporzioni correttamente. Gli  esempi appena citati mostrano entrambe le tecniche: l&#8217;Esempio 3 si ridimensiona per riempire l&#8217;intera pagina. L&#8217;Esempio 4 si ridimensiona solo per la finestra del browser.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Quella cosa chiamata scalabilit\u00e0<\/h2>\n<p>Poco fa, abbiamo mostrato come aprire un SVG elencato nell&#8217;esempio con l&#8217;elemento <code>object<\/code> direttamente nel vostro browser. Notate che l&#8217;oggetto grafico \u00e8 molto pi\u00f9 largo di come appare in veste di icona nella pagina di Jeff. Ci\u00f2 \u00e8 dovuto a due motivi: <a href=\"http:\/\/www.w3.org\/TR\/SVG\/coords.html#ViewBoxAttribute\" title=\"l'attributo viewBox di SVG\">l&#8217;attributo viewBox di SVG<\/a> e la dimensione del contenitore nel quale \u00e8 aperto l&#8217;oggetto grafico.<\/p>\n<p>L&#8217;elemento SVG di Jeff ha un attributo viewBox pari alla dimensione del documento dell&#8217;oggetto grafico:<\/p>\n<pre>\n<code>\nviewBox=\"0 0 740 850\"\n<\/code>\n<\/pre>\n<p>L&#8217;attributo viewBox assicura che l&#8217;oggetto grafico obbligato alle dimensioni del box fissate nei setting della viewBox si allarghi fino ad occupare il contenitore. Viene assegnato un valore all&#8217;attributo, le dimensioni del box in cui \u00e8 contenuto, a partire da una coppia x y, e poi la larghezza e l&#8217;altezza &#8211; x \u00e8 il primo valore, y il secondo, la larghezza \u00e8 il terzo e l&#8217;altezza \u00e8 il quarto. Quando Jeff ha aperto l&#8217;oggetto SVG in un elemento <code>object<\/code> con una data altezza e larghezza, la grafica sembrava avere proprio quelle dimensioni. Quando \u00e8 aperta in una finestra di un browser, la grafica sembra essere molto pi\u00f9 larga.<\/p>\n<p>Un altro attributo SVG definisce come la grafica si ridimensiona: <a href=\"http:\/\/www.w3.org\/TR\/SVG\/coords.html#PreserveAspectRatioAttribute\">preserveAspectRatio<\/a>. L&#8217;oggetto SVG di Jeff non fissa specificamente questo attributo, cos\u00ec il preserveAspectRatio di SVG \u00e8 settato di default e deve ridimensionarsi proporzionalmente.<\/p>\n<p>Potete vedere questa propriet\u00e0 in azione sul sito <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i\/figure1.png\">Emacs in Mac OS X<\/a>. In questo sito, se ridimensionate verticalmente la finestra del browser, l&#8217;immagine si ridimensiona sia orizzontalmente sia  verticalmente, per assicurare che la grafica rimanga proporzionata. Lo stesso accade se la finestra del browser viene ridimensionata orizzontalmente, oppure in entrambe le direzioni.<\/p>\n<p>Tuttavia se aprite <a href=\"http:\/\/frugalalgorithm.burningbird.net\/\">Frugal Algorithm<\/a> e ridimensionate la finestra del browser, vedrete che la grafica pu\u00f2 distorcersi, si stringe orizzontalmente se la finestra \u00e8 ridimensionata orizzontalmente (Figura 3), o verticalmente (Figura 4), o entrambe. Infatti, ho settato il valore di preserveAspectRatio a &#8220;none&#8221;, perch\u00e9 voglio che la mia immagine riempia lo spazio che le \u00e8 assegnato, indipendentemente dalla dimensione dello spazio. Non sto tentando di preservare l&#8217;aspect ratio (rapporto d&#8217;aspetto).<\/p>\n<div class=\"centered\">\n <img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure3.png\" border=\"0\" alt=\"Frugal Algorithm site displayed in narrow window\" \/><\/p>\n<p style=\"text-align: center;\">Fig 3. Il sito Frugal Algorithm  visualizzato in una finestra stretta<\/p>\n<\/div>\n<div class=\"centered\">\n <img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure4.png\" border=\"0\" alt=\"Frugal Algorithm site displayed in wide window\" \/><\/p>\n<p style=\"text-align: center;\">Fig 4. Il sito Frugal Algorithm  visualizzato in una finestra larga<\/p>\n<\/div>\n<p>L&#8217;ultimo approccio pu\u00f2 essere un modo efficace per un&#8217;immagine di sfondo di una pagina web, ma pu\u00f2 essere impegnativo da usare. Ad esempio, ho imparato che una grafica con una larghezza 5 volte la sua altezza \u00e8 una immagine per il bordo inferiore che appare bella indipendentemente dalla dimensione del browser. Ho anche settato l&#8217;elemento SVG perch\u00e9 il suo posizionamento sia fissato, cos\u00ec da essere sempre visualizzato.<\/p>\n<p>Un&#8217;immagine di background che si adatti all&#8217;intera pagina web pu\u00f2 essere pi\u00f9 impegnativa. Ho imparato che una singola immagine con un <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/paintbrush.svg\" title=\"forte senso di diagonalit\u00e0\">forte senso di diagonalit\u00e0<\/a>, ridimensionata in modo tale da riempire al 100% l&#8217;altezza e la larghezza della pagina pu\u00f2 essere una grafica di background divertente ed efficace che sembra sia creata su misura per ogni dimensione di pagina, come mostrato in Figura 5 e dimostrato anche dall&#8217;<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/example5.xhtml\" title=\"Esempio 5\">Esempio 5<\/a>.<\/p>\n<div class=\"centered\">\n <img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure5.png\" border=\"0\" alt=\"SVG Feed site with paintbrush background image\" \/> <\/p>\n<p>Fig 5. SVG Feed site with paintbrush background image<\/p>\n<\/div>\n<p>Per tornare all&#8217;uso che fa Jeff di SVG, egli utilizza un oggetto SVG come elemento di sfondo per creare un bordo blu che circonda il contenuto del suo sito. Tuttavia, se guardate l&#8217;oggetto SVG nella pagina, noterete che usa pi\u00f9 elementi SVG per creare tale effetto. La linea verticale \u00e8 fissata nel codice a 100 pixel di larghezza che pu\u00f2 allargarsi al 100%; quella orizzontale ha un&#8217;altezza di 100 pixel e pu\u00f2 allungarsi al 100%. Gli angoli arrotondati sono a tutti gli effetti un gradiente, definito altrove:<\/p>\n<pre>\n<code>\n&lt;svg id=\"leftedge\" version=\"1.1\" width=\"100%\" \n  height=\"100%\" \n  xmlns=\"http:\/\/www.w3.org\/2000\/svg\"&gt;   \n&lt;rect width=\"100px\" height=\"100%\"\n  fill=\"url(#leftgrad)\" \/&gt;  \n&lt;\/svg&gt;\n&lt;svg id=\"rightedge\" version=\"1.1\" width=\"100%\"\n  height=\"100%\"\n  xmlns=\"http:\/\/www.w3.org\/2000\/svg\"&gt;\n&lt;rect width=\"100px\" height=\"100%\" \n  fill=\"url(#rightgrad)\" \/&gt;  &lt;\/svg&gt;\n&lt;svg id=\"header\" version=\"1.1\"\n  xmlns=\"http:\/\/www.w3.org\/2000\/svg\"&gt;\n&lt;rect width=\"100%\" height=\"100px\" fill=\"url(#topgrad)\" \/&gt;\n&lt;rect width=\"100px\" height=\"100px\"\n  fill=\"url(#gradcornerTL)\" \/&gt;\n&lt;rect x=\"100%\" width=\"100px\" height=\"100px\"\n  fill=\"url(#gradcornerTR)\"\n  transform=\"translate(-100,0)\" \/&gt;  &lt;\/svg&gt;\n<\/code>\n<\/pre>\n<p>Notate che il gradiente usato per riempire i rettangoli \u00e8 definito altrove. Questo \u00e8 un altro interessante aspetto di SVG all&#8217;interno di una pagina web: potete definire dei patterns e dei gradienti in un posto ed usarli in molti posti diversi. Io ho usato questo approccio con il mio vecchio <a href=\"http:\/\/burningbird.net\/technology\/color-sampling-and-svg-gradients\/\">photo  picker gradient<\/a> (gradiente creato a partire da un colore prelevato in una foto), per riempire il contorno dei commenti (capstones) con un gradiente basato sui colori della foto.<\/p>\n<p>La <a href=\"http:\/\/www.w3.org\/TR\/SVG\/\" title=\"specifica di SVG 1.1\">specifica  di SVG 1.1<\/a> copre altre opzioni che potete usare per gestire il rapporto d&#8217;aspetto (aspect ratio) della vostra immagine SVG.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Creare SVG<\/h2>\n<p>Potete trovare degli SVG pronti all&#8217;uso sul web e in seguito in questa sezione elencher\u00f2 delle buone risorse per SVG. Comunque, potete facilmente creare il vostro SVG, o usando uno strumento che gi\u00e0 avete, come Adobe Illustrator oppure usando un tool come <a href=\"http:\/\/www.inkscape.org\/\" title=\"Inkscape\">Inkscape<\/a>, che \u00e8 uno strumento per grafica vettoriale disponibile gratuitamente, famoso e open source. La Figura 6 mostra Inkscape aperto, con una bitmap pronta per essere convertita in SVG.<br \/>Un altro editor per SVG \u00e8 <a href=\"http:\/\/code.google.com\/p\/svg-edit\/\" title=\"SVG-edit\">SVG-edit<\/a> anch&#8217;esso gratuito, basato su JavaScript. E poich\u00e9 \u00e8 basato su JavaScript, potete incorporare il tool in qualunque pagina web, fornendo  cos\u00ec la possibilit\u00e0 di creare SVG ad altri. Se non volete installare un tool o inserirlo in una pagina web, potete anche usare l&#8217;editor vettoriale <a href=\"http:\/\/aviary.com\/tools\/raven\">Raven<\/a>, sul sito web Aviary.<\/p>\n<div class=\"centered\">\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure6.png\" border=\"0\" alt=\"Inkscape with bitmap clip art\" width=\"540\" height=\"438\" \/> <\/p>\n<p>Fig 6. Inkscape con la clip art bitmap<\/p>\n<\/div>\n<p>Se  avete gi\u00e0 un semplice JPEG on un&#8217;altra grafica bitmap, potete convertire la bitmap in SVG. A seconda di quanta grafica volete catturare, potreste addirittura finire con qualcosa che a tutti gli effetti \u00e8 superiore all&#8217;originale, o perlomeno un&#8217;interessante versione dell&#8217;originale.<\/p>\n<p>Un tool che potete utilizzare per convertire bitmaps in SVG \u00e8 <a href=\"http:\/\/vectormagic.com\/\">Vector Magic<\/a>, che esiste sia nella variante online sia in quella desktop. Vector Magic fornisce varie  opzioni per controllare l&#8217;output e fa un lavoro eccellente particolarmente con le immagini pi\u00f9 complesse. Potete provare Vector Magic senza abbonarvi per vedere l&#8217;effetto della trasformazione. <a href=\"http:\/\/www.wpclipart.com\/\">WP Clipart<\/a> ha molte immagini disponibili gratuitamente che rendono bene in maniera vettoriale.<\/p>\n<p>Potete anche usare Inkscape per convertire facilmente bitmap in SVG, come mostrano i passi seguenti:<\/p>\n<ol>\n<li>Aprite l&#8217;immagine in Inkscape.<\/li>\n<li>Una volta aperta, selezionate l&#8217;immagine cliccando sul menu Edit e poi  Select All.<\/li>\n<li>Selezionate il menu Path, poi selezionate Trace Bitmap. Questa azione fa aprire la finestra di dialogo Trace Bitmap, come mostrato in Figura 7.<\/li>\n<li>Molto probabilmente vorrete usare Multiple Scans e l&#8217;opzione Colors. Inizialmente, potete lasciare il numero di scansioni a otto. Accettate le opzioni Smooth e Stack Scan. Se volete rimuovere il colore di sfondo, selezionate l&#8217;opzione Remove background.<\/li>\n<li>Cliccate sul pulsante Update per convertire la  bitmap in vettore, azione che viene riflessa nella finestra di anteprima  (preview window), mostrata in Figura 8.<\/li>\n<li>Se il risultato vi soddisfa, cliccate sul pulsante OK. Altrimenti, modificate i settings fino a che non ottenete il risultato desiderato.<\/li>\n<li>Chiudete la finestra di dialogo e tornate all&#8217;editor.<\/li>\n<li>Potreste voler cancellare la bitmap originale. Selezionate il layer che contiene la bitmap, scegliete Edit e poi Delete. Ci\u00f2 che rimane \u00e8 il vostro vettore convertito, come mostrato in Figura 9.<\/li>\n<li>A questo punto, potete selezionare i percorsi o i pezzi dello SVG da alterare e rimuovere o aggiungere nuovi pezzi.<\/li>\n<li>Una volta che sarete soddisfatti della vostra grafica, esportatela come SVG. Selezionate il menu File, e poi Save As. Nella finestra di dialogo che si apre, assicuratevi di selezionare l&#8217;opzione Plain SVG in basso a destra. Suggerimento: salvando in formato Inkscape verr\u00e0 aggiunto del markup all&#8217;immagine che tipicamente non \u00e8 necessario se dovete usare l&#8217;immagine direttamente nel web.<\/li>\n<\/ol>\n<div class=\"centered\">\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure7.png\" border=\"0\" alt=\"Opening the Trace bitmap dialog  window\" \/> <\/p>\n<p>Fig 7. Opening the Trace bitmap dialog window<\/p>\n<p style=\"text-align: center;\">\u00a0<\/p>\n<\/div>\n<div class=\"centered\">\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure8.png\" border=\"0\" alt=\"Trace bitmap dialog window\" \/> <\/p>\n<p>Fig 8. Trace bitmap dialog window<\/p>\n<\/div>\n<p>Per farvi verificare direttamente la qualit\u00e0 di conversione da bitmap di Inkscape, ho creato le seguenti immagini SVG usando le clip art di dominio pubblico che ho trovato sul web: il logo di public domain (<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample1.jpg\">JPEG<\/a>, <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample1.svg\">SVG<\/a>), una tazza da caff\u00e9 (<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample2.png\">PNG<\/a>, <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample2.svg\">SVG<\/a>), fiori primaverili (<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample3.png\">PNG<\/a>, <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample3.svg\">SVG<\/a>), pastelli colorati (<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample4.png\">PNG<\/a>, <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample4.svg\">SVG<\/a>), e simboli di Halloween (<a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample5.png\">PNG<\/a>, <a href=\"https:\/\/alistapart.github.io\/code-samples\/using-svg-for-flexible-scalable-and-fun-backgrounds-part-ii\/sample5.svg\">SVG<\/a>). Le ultime due hanno richiesto pi\u00f9 path finch\u00e9 non sono stata  soddisfatta dell&#8217;immagine. Tipicamente, quanto pi\u00f9 \u00e8 compless un&#8217;immagine tanti pi\u00f9 paths saranno necessari per catturare tutte le  variazioni di colore nell&#8217;immagine.<\/p>\n<p>Una volta che avete il vostro SVG, i vostri disegni potranno essere statici oppure potrete usare JavaScript per animare ogni aspetto dello SVG. Potete anche usare le <a href=\"http:\/\/www.w3.org\/TR\/SVG\/animate.html\" title=\"tecniche di animazione dichiarativa\">tecniche di animazione dichiarativa<\/a> implementate in SVG, sebbene sarebbe meglio riservare l&#8217;animazione ai diagrammi piuttosto che usarla per il design di una pagina.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Utilizzare  le grafiche vettoriali trovate nei vostri progetti<\/h2>\n<p>Il web \u00e8 ricco di grafiche vettoriali in altri formati quali EPS o Adobe Illustrator (.ai). Come SVG, molti file di grafica vettoriale si possono usare liberamente, perlomeno nei siti personali. Se il formato non \u00e8 gi\u00e0 un SVG, una rapida ricerca in Google mostrer\u00e0 diverse tecniche e risorse che potrete usare per convertire tale formato in SVG. Inkscape cura anche una <a href=\"http:\/\/wiki.inkscape.org\/wiki\/index.php\/Tools#Convert_to_SVG\" title=\"lista dei tool di conversione\">lista dei tool di conversione<\/a>. Inoltre, Adobe Illustrator pu\u00f2 anche esportare grafiche vettoriali come SVG.<br \/>La <a href=\"http:\/\/www.openclipart.org\/\">Open Source Clip Art Library<\/a> \u00e8 un ottimo posto per scoprire SVG esistenti e altri differenti tipi di grafiche di pubblico dominio. Una volta che avete il file grafico, potete modificarlo per soddisfare i vostri  bisogni, o combinare pi\u00f9 grafiche in una. Se siete nuovi a SVG, usate Inkscape per modificare l&#8217;immagine, altrimenti potreste essere capaci di modificare direttamente lo SVG, usando un editor XML. Una ricerca in Google con le parole &#8220;vector silhouettes&#8221; ha dato come risultato molti dei files sorgente delle silhouttes dei miei siti.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Ottimizzare  e potenziare SVG<\/h2>\n<p>Per essere sicuri che un SVG sia ottimizzato per l&#8217;uso sul web, fate partire l&#8217;utility <a href=\"http:\/\/www.codedread.com\/scour\/\">Scour<\/a> su di esso per eliminare le inefficienze e gli spazi bianchi superflui dopo che avrete copiato, convertito e modificato il vostro file SVG. Scour \u00e8 un semplice  script Python creato da Jeff Schiller. Funziona da riga di comando o  pu\u00f2 essere lanciato anche come estensione di Inkscape.<\/p>\n<p>La cosa importante da ricordare \u00e8 che quando si creano o si cercano degli SVG da  usare nel proprio design web non dovete preoccuparvi delle dimensioni: un&#8217;immagine in formato SVG \u00e8 bella sia che sia piccola sia che sia grande. Inoltre, non dovete nemmeno preoccuparvi che l&#8217;immagine sia  esattamente ci\u00f2 che volete poich\u00e9 SVG \u00e8 estremamente malleabile. La combinazione della sua scalabilit\u00e0 e della sua malleabilit\u00e0 rendono SVG  un nuovo e divertente strumento di progettazione web.<br \/>Per dimostrare  ci\u00f2 che potete fare con un file SVG esistente, visitiamo nuovamente il sito EMACS for OS X. Questa volta, invece che concentrarci sull&#8217;immagine in primo piano, acceder\u00f2 all&#8217;oggetto SVG che fornisce il gradiente di sfondo. Ho separato questo SVG in un file:<\/p>\n<pre>\n<code>\n&lt;svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\n  preserveAspectRatio=\"none\" viewBox=\"0 0 100 100\"\n  style=\"width:100%; height:100%; position:fixed; top:0;\n  left:0; z-index:1\"&gt;\n&lt;linearGradient id=\"background_gradient_black\"\n  x1=\"0%\" y1=\"10\" x2=\"0%\" y2=\"90\" \n  gradientUnits=\"userSpaceOnUse\"&gt;\n&lt;stop offset=\"0%\"   stop-color=\"#000\" \n  stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"45%\"  stop-color=\"#444\"\n  stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"55%\"  stop-color=\"#444\" \n  stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"100%\" stop-color=\"#000\" \n  stop-opacity=\"1\" \/&gt;\n&lt;\/linearGradient&gt;     \n&lt;rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" \n  fill=\"url(#background_gradient_black)\" \/&gt;\n&lt;\/svg&gt;\n<\/code>\n<\/pre>\n<p>Questo SVG usa un gradiente. I gradienti sono implementati in stops, ognuno dei quali specifica l&#8217;offset in cui lo stop del gradiente \u00e8 completamente finito. Il motore che implementa l&#8217;immagine si assicura che il colore da uno stop si mescoli gradualmente nel colore derivante dallo stop successivo.<\/p>\n<p>Mi piace il gradiente, ma vorrei un po&#8217; pi\u00f9 di colore. Ad esempio, mi piacerebbe incorporare un po&#8217; di giallo nel gradiente e un po&#8217; di rosso ed aggiustare gli stop di conseguenza:<\/p>\n<pre>\n<code>\n&lt;svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.1\"\n  preserveAspectRatio=\"none\" viewBox=\"0 0 100 100\"\n  style=\"width:100%; height:100%; position:fixed; top:0; \n  left:0; z-index:1\"&gt;\n&lt;linearGradient id=\"background_gradient_black\"\n  x1=\"0%\" y1=\"10\" x2=\"0%\" y2=\"90\" \n  gradientUnits=\"userSpaceOnUse\"&gt;\n&lt;stop offset=\"0%\"   stop-color=\"#000\" stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"35%\"  stop-color=\"#200\" stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"65%\"  stop-color=\"#600\" stop-opacity=\"1\" \/&gt;\n&lt;stop offset=\"100%\" stop-color=\"#ff0\" stop-opacity=\"1\" \/&gt;\n&lt;\/linearGradient&gt;    \n&lt;rect x=\"0\" y=\"0\" width=\"100\" height=\"100\"\n  fill=\"url(#background_gradient_black)\" \/&gt;\n&lt;\/svg&gt;\n<\/code>\n<\/pre>\n<p>Da ultimo, ho preso la silhoutte SVG che uso per il mio sito Frugal Algorithm e l&#8217;ho aggiunto alla stessa pagina web del mio gradiente di sfondo appena modificato, come mostrato in Figura 9. Poich\u00e9 SVG \u00e8 basato sui vettori, fondere insieme pi\u00f9 immagini e modificarne il risultato \u00e8  estremamente semplice, molto di pi\u00f9 che con le bitmap.<\/p>\n<div class=\"centered\">\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2010\/02\/figure9.png\" border=\"0\" alt=\"Combing SVG background images\" \/> <\/p>\n<p>Fig 9. Combing SVG background images<\/p>\n<\/div>\n<p>Riuscire a combinare facilmente pi\u00f9 grafiche vettoriali e modificarne il risultato \u00e8 solo uno degli aspetti divertenti di SVG. Come abbiamo visto in questo articolo, SVG pu\u00f2 anche essere &#8220;cross-browser friendly&#8221; e relativamente semplice da creare. <\/p>\n<p>Tuttavia, \u00e8 la scalabilit\u00e0 di SVG che aggiunge una nuova dimensione al design del nostro sito: non siamo pi\u00f9 obbligati ad avere larghezze ed altezze fissate in un ambiente di dimensioni flessibili.<\/p>\n<\/div>\n<div id=\"credits\">\n<ul>\n<li>Illustrazioni create da <a href=\"http:\/\/www.mondonascosto.com\/\">Carlo Brigatti<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo, esaminer\u00f2 la tecnologia che sta dietro l&#8217;uso di SVG per il design del vostro sito. Esploreremo come  incorporare SVG in maniera cross-browser friendly, incluso l&#8217;utilizzo di SVGWeb per essere sicuri che SVG verr\u00e0 visualizzato in Internet Explorer. Inoltre, coprir\u00f2 anche l&#8217;unica caratteristica che rende SVG l&#8217;ideale per gli sfondi delle pagine: la scalabilit\u00e0.<\/p>\n","protected":false},"author":818,"featured_media":7000565,"comment_status":"open","ping_status":"open","template":"","categories":[242,258,247,2],"tags":[],"coauthors":[283],"class_list":["post-13","article","type-article","status-publish","has-post-thumbnail","hentry","category-browser","category-graphic-design","category-html","category-numero-zero-febbraio-2010"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/users\/818"}],"replies":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/comments?post=13"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000565"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=13"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}