I microformati sono delle porzioni di markup che sfruttano gli attributi
(X)HTML (class
, rel,
rev
...) per
veicolare informazioni in modo che siano leggibili sia dall'uomo che dai
programmi.
Il microformato più comunemente utilizzato è la hCard il
cui scopo è quello di contenere informazioni relative ad una persona. In
pratica rappresenta un biglietto da visita elettronico, il cui
grande vantaggio consiste nel fatto che ogni singola informazione in esso
contenuta può essere estratta facilmente da qualsiasi programma esterno: è
quindi possibile che un gestore di rubrica estragga il nome e il numero di
telefono, un browser estragga l'indirizzo del sito web associato alla persona
etc.
In questa breve guida vediamo come si può abbellire con un po di
CSS la nostra hCard, così da poterla inserire nel nostro sito personale.
Il markup
I microformati non sono altro che porzioni di codice XHTML marcato con
opportune classi, che ne rendono riconoscibile il contenuto.
Nel caso della hCard, il codice potrebbe essere questo:
<div class="vcard">
<div class="fn">Joe Doe</div>
<div class="org">The Example Company</div>
<div class="tel">604-555-1234</div>
<a class="url"
href="http://example.com/">http://example.com/</a>
</div>
Come si nota, il microformato non è altro che una serie di div annidate.
La div marcata .vcard
serve ad indicare che il codice successivo
rappresenta una vCard (il formato elettronico standard dei biglietti da
visita).
La classe .fn
indica che il contenuto della div è il nome
formale, .org
indica il nome dell'organizzazione,
.tel
è ovviamente il telefono e .url
l'indirizzo
web.
È possibile poi inserire l'indirizzo fisico, aggiungendo altri
elementi:
<div class="adr">
<div class="street-address">200 2nd Ave. South #358</div>
<div>
<span class="locality">St. Petersburg</span>,
<span class="region">FL</span> <span
class="postal-code">33701-4313</span>
</div>
<div class="country-name">USA</div>
</div>
È importante notare come ogni informazione sia organizzata in
modo gerarchico: c'è un tag xHTML marcato con una classe, e per ogni
sotto-informazione c'è un altro tag annidato marcato con un altra classe.
In una hCard si possono utilizzare diversi tipi di informazione, ognuna
con la relativa classe. Per qualsiasi approfondimento fate riferimento alla
pagina ufficiale.
Per portare avanti il nostro esempio utilizziamo il seguente formato:
<div class="vcard">
<div class="fn">Gianluca Brindisi</div>
<div class="nickname">Laburno</div>
<div class="org">HTML.it</div>
<div class="email">g.brindisi@html.it</div>
<a class="url"
href="http://blog.html.it">http://blog.html.it</a>
</div>
Applichiamo un po' di stile
Dal punto di vista del web designer quello che abbiamo di fronte è una
comune porzione di codice HTML, non esistono quindi particolari limiti
all'aspetto che vogliamo ottenere. È solo una questione di creatività.
Teniamo presente però che una hCard dovrebbe essere completa, cioè
ricca di informazioni: in questo modo ne basta una in una
pagina per poter soddisfare le richieste di qualsiasi programma.
Si pensi ad esempio che se ad un programma che gestisce una rubrica dei
contatti possa bastare il nome e l'indirizzo di posta, al software di una
navigatore satellitare potrebbe interessare invece l'indirizzo fisico, e così
via.
Tutte queste informazioni, su una pagina web sono "visivamente"
superflue perciò è opportuno nasconderle.
Portiamo avanti l'esempio in modo incrementale, partendo dalla
visualizzazione del solo nome:
.vcard .nickname,
.vcard .org,
.vcard .email,
.vcard .url { display:none; }
Aggiungiamo una piccola icona, facciamo respirare il testo, diamo qualche
regola tipografica, ed ecco pronta una vcard di
base da poter inserire, ad esempio, in un footer:
body { font-size: 62.5%; }
.vcard { width: 20em; margin: 2em auto; font-size: 1.2em; line-height:
1.5;}
.vcard {
background: #fff url(vcard.png) .75em .7em no-repeat;
padding: .75em .75em .75em 3em;
outline: 1px solid #ededed;
}
.vcard .fn { font-weight: bold; }
Adesso potremmo voler far apparire l'indirizzo email al passaggio del
mouse. Per farlo basta una piccola regola CSS:
.vcard:hover .email { display: normal; }
Applichiamo un colore più chiaro di quello applicato a .fn in modo che non
tolga visibilità al nome:
.vcard .nickname,
.vcard .org,
.vcard .email,
.vcard .url { color: #666; }
Vedi esempio.
È possibile anche ritoccare il markup, facendo attenzione a non inquinare
i tag semantici (le div con le classi speciali) con contenuto superfluo. Per
esempio, possiamo modificare la div con l'indirizzo e-mail in questo modo:
<div>E-mail: <span
class="email">g.brindisi@html.it</span></div>
In questa maniera, anche se la marcatura è passata dalla div ad uno span,
la validità del microformato è intatta.
Questo ci permette di evolvere ulteriormente il codice dandoci nuove
possibilità di abbellimento:
<div>E-mail: <a href="mailto:g.brindisi@hmtl.it"
class="email">g.brindisi@html.it</a></div>
Sostituendo lo span con un elemento ancora abbiamo reso la hCard più
adatta ad una pagina web.
Ora basta risistemare le regole che definiscono la visibilità e aggiungere
un po di stile per link:
.vcard div,
.vcard .nickname,
.vcard .org,
.vcard .url { display:none; }
.vcard .fn { display:block; }
.vcard:hover div { display: block; }
.vcard:hover .nickname,
.vcard:hover .org,
.vcard:hover .url { display:none; }
a { color: #3087D9; text-decoration:none; }
a:hover { color: #666; border-bottom: 1px solid #3087D9 }
Ecco l'esempio funzionante.
Si può obiettare che su Internet Explorer 6 la hCard così disegnata non
funziona come dovrebbe. Questo perchè IE6 non supporta la pseudo-classe
:hover
per elementi che non siano link (tag
<a>
). Questo è vero, ed anche se non è un problema
rilevante perchè la validità della hCard risulta invariata, se si vuole
ottenere una resa cross-browserperfetta nulla ci vieta di
sostiuire <div class="vcard">
con <a
, attuando però dei piccoli accorgimenti. In questo
class="vcard">
modo:
<a class="vcard">
<span class="fn">Gianluca Brindisi</span>
<span class="nickname">Laburno</span>
<span class="org">HTML.it</span>
<span class="email">g.brindisi@html.it</span>
<a class="url"
href="http://blog.html.it">http://blog.html.it</a>
</a>
Notare che le varie div sono state sostituire con degli span, questo
perché se passati al validatore, elementi di blocco (come le div)
contenuti in elementi inline (come le ancore) danno errore.
C'è però un problema più grave: racchiudendo tutta la hCard dentro ad un
link si perdono le funzionalità dei link interni (.email
e
.url
), e questo è il compromesso che dobbiamo accettare a fronte
di una resa cross-brwoser anche per IE6. La scelta è vostra.
Conclusioni
L'esempio portato avanti fino adesso è solo una delle infinite possibilità
che l'utilizzo dei fogli di stile offrono.
Il consiglio che vi do è quello di implementare la hCard in accordo al
design del vostro sito in modo che la sua presenza risulti completamente
trasparente, stando sempre attenti a preservarne la validità. Per controllare
di aver fatto un buon lavoro, provatelo con questa
bookmarklet: è un piccolo script che fa il parsing di una pagina alla
ricerca di una hCard, se il risultato è positivo allora avrete implementato
un hCard valida.
Per approfondire vi lascio con qualche lettura interessante:
- Styling hCard
with CSS su 24ways - Highlight
Microformats with CSS su Hickdesign - A
Business Card Microformat Site su CSStricks