La mia comprensione dalla lettura di thread come questo è che il punto di ems è definire tutte le misurazioni nella tua pagina Web, in base alla dimensione del carattere di base , che può essere impostata dal tuo browser.
Ad esempio, in Chrome puoi farlo andando settings -> show advanced settings -> web content -> font size: very large
. Potrei farlo se stavo usando un monitor grande e ad alta risoluzione, che era molto lontano.
Ho creato un plunker che dimostra la differenza tra ems e px nel dimensionamento.
#div1 {
width: 320px
}
#div2 {
width: 20em;
}
Se nel mio browser ho impostato la dimensione del carattere su media, questi div avranno la stessa dimensione, la dimensione del carattere di base è 16px, quindi 20em = 320px.
Tuttavia, quando cambio la dimensione del carattere del mio browser su molto grande, possiamo vedere che il div misurato in ems ha una dimensione maggiore.
Tuttavia, questo effetto verrà annullato se, ad esempio, definisco la dimensione del carattere nel tag body.
body {
font-size: 16px;
}
Perché ora il mio CSS sta sovrascrivendo la dimensione del carattere impostata dal browser.
Capisco che gli sms sarebbero stati importanti ai tempi dei browser più vecchi, dove lo zoom sulla pagina avrebbe solo ridimensionato i caratteri. Ma in questi giorni i browser moderni scalano sia i pixel che i caratteri, rendendo discutibile il problema dello zoom.
Guardando tutto il web - un sacco di siti web fanno insieme la dimensione del carattere nella loro tag body.
Stack Overflow, ad esempio, imposta la dimensione del carattere su 13px nel tag body. L'impostazione della dimensione del carattere nel mio browser non influisce minimamente sul layout di Stack Overflow.
I risultati di ricerca di Google non lo fanno.
(entrambi questi screenshot sono stati presi con dimensioni del carattere cromate impostate su dimensioni molto grandi e zoom al 100%).
Quindi forse potresti obiettare che l'impostazione della dimensione del carattere nel tag body è una cattiva idea perché impedisce le impostazioni di accessibilità di un utente. Ma dato che l'utente può ingrandire per aumentare le dimensioni (che aumenteranno proporzionalmente anche tutti i pixel) - questo non sembra un vero problema.
body { font-size: XYZ; }
utilizzo di un foglio di stile utente conbody { font-size: ZYX !important; }