Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Icon Fonts: sfruttare @font-face al posto degli sprite

Utilizzare la regola @font-face per creare e modificare icone senza usare singole immagini o sprite
Utilizzare la regola @font-face per creare e modificare icone senza usare singole immagini o sprite
Link copiato negli appunti

Due dei principali problemi, quando si sviluppa una web app o si utilizza un responsive web design, sono la velocità di caricamento delle pagine e la scalabilità delle immagini e delle grafiche.

Le immagini 'rubano' sempre molta banda e nell'utilizzare media queries per creare per esempio la versione mobile di un sito web, si ha spesso la necessità di ridimensionare icone e altri piccoli elementi grafici allo scalare del layout.

La tecnica degli sprite CSS risolve in parte il 1° problema ma è non così veloce da implementare nei CSS e non è scalabile perchè si tratta comunque di immagini bitmap.

Trattandosi comunque di un'immagine bitmap, è possibile modificare gli sprites solo rieditando prima il file che contiene tutte le immagini con un programma di grafica.

Perchè usare e dove trovare Icon Fonts

Un'altra tecnica, che si sta diffondendo a macchia d'olio, è utilizzare un web font che contenga icone al posto di caratteri tipografici: un Icon Font.

Un web font è vettoriale, è scalabile a piacere e gode di un'ottima accessibilità e compatibilità browser. Un'icon font ha le stesse caratteristiche e può essere embeddato in una pagina web allo stesso modo, cioè usando la direttiva @font-face.

Esistono molte raccolte di icon font già pronte all'uso, a pagamento e free. Chi già conosce Font Squirrel per il suo generatore, può fare qualche test usando subito un loro icon font che si chiama 'Modern Pictograms' e che contiene un icon font free in formato OTF convertibile da subito in un @font-face Kit pronto all'uso:

Figura 01. (clic per ingrandire)


Ecco il contenuto del foglio di stile incluso nel kit:

@font-face {
    font-family: 'ModernPictogramsNormal';
    src: url('modernpics-webfont.eot');
    src: url('modernpics-webfont.eot?#iefix') format('embedded-opentype'),
         url('modernpics-webfont.woff') format('woff'),
         url('modernpics-webfont.ttf') format('truetype'),
         url('modernpics-webfont.svg#ModernPictogramsNormal') format('svg');
    font-weight: normal;
    font-style: normal;
}

La procedura da seguire

Un icon font è composto da un set predefinito di icone 'mappate' ognuna con un carattere dell'alfabeto. Nel nostro caso infatti, su Font Squirrel è presente anche una mappa dei caratteri dalla quale si vede facilmente che alla lettera 'F' corrisponde l'icona di Facebook, alla 'P' il pulsante PLAY di un video, alla 'T' un uccellino...e cosi via.

Figura 02. (clic per ingrandire)


Ecco ad esempio la sintassi HTML/CSS da usare per creare un link a facebook, il markup è piuttosto semplice:

<a href="http://facebook.com">
  <span aria-hidden="true" data-icon="l"></span>
  facebook
</a>

  • Lo <span> serve a racchiudere l'icona che verrà inserita via CSS
  • aria-hidden="true" è una nuova specifica HTML5 che in questo caso serve a fare in modo che uno screen reader legga solamente Facebook e non "F Facebook".
  • data-icon="l" è un'altra nuova specifica HTML5 che ci serve per scegliere l'icona desiderata dalla nostra mappa dei caratteri

Ecco il CSS:

[data-icon]:before {
  font-family: 'ModernPictogramsNormal';
  content: attr(data-icon);
  -webkit-font-smoothing: antialiased;
}

Con il pseudo-selettore :before e la proprietà content possiamo generare contenuto via CSS e precederlo al testo vero e proprio del link nell'HTML.

Possiamo stilare il contenuto generato includendo quindi la font-family e assicurarci un'ottima resa su tutti i browser WebKit (Chrome, Safari, Mobile Safari, Android, ecc) grazie a:

-webkit-font-smoothing: antialiased;

Ecco un esempio della tecnica appena descritta in azione.

Figura 03. (clic per ingrandire)


Usare Icon Font è conveniente, veloce, scalabile e scegliendo una font-family di qualità si può arrivare ad un ottimo risultato.

Si possono applicare stili CSS3 alle icone (text-shadow, gradienti, box-shadow e altro ancora) e provare combinazioni grafiche on-the-fly con Firebug senza tornare su Photoshop.

Link utili

Ti consigliamo anche