allora semplifichiamo il discorso
un em corrisponde in generale alla larghezza della lettera 'm' per un dato font-size.
Ma, per come si comportano i font nei vari browser, la questione è più semplice
se hai un font-size pari a 10 px, allora 1em = 10px e avrai quindi le seguenti proporzioni
codice:
0,1em = 1px
0,2em = 2px
...
1.5em = 15px
1.6em = 16px
...
e così via, ad libitum
ma se tu hai un font-size pari a 20px allora 1em = 20px quindi
codice:
0,05em = 1px
0,10em = 2px
...
0,75em = 15px;
0,80em = 16px;
...
e così via. Di norma però conviene scegliere come dimensione base 10px in modo da semplificare i calcoli, ovvero dichiarando su un file css di reset la proprietà
codice:
body {
font-size: 10px;
}
e impostando tutti gli altri font-size (per paragrafi, liste, headings) in ems.
così facendo però si impedisce a IE6 di scalare il font se l'utente decide di cambiarlo (a causa di un bug che non gli consente di scalare la grandezza di un font se non è in ems o in percentuale).
Quindi come escamotage utilizzo l'underscore hack per definire una regola aggiuntiva per IE6.
Poiché voglio portare il font-size all'equivalente di 10px e sapendo che IE6 ha un font-size di default di 16px basta scrivere
codice:
body {
font-size: 10px;
_font-size: 62.5% ; /* (il 62,5% di 16 è pari a 10) */
}
oppure si può scrivere anche
codice:
body {
font-size: 10px;
_font-size: 0.625em ; /* calcolo equivalente in ems */
}
però preferisco il primo sistema, perchè IE6 ha anche problemi di arrotondamento (una disgrazia fatta browser) e non vorrei metterlo a dura prova
con troppi decimali
Spero sia più chiaro