em e rem sono unità relative basate sui caratteri ed è diverso usare ems per i caratteri o per la lunghezza, quindi sia ems che rems sono basati sui caratteri ma la differenza tra loro è che ems usa l' elemento genitore o corrente come riferimento mentre rems usa la dimensione del carattere di root come riferimento.
Se vogliamo usare ems per le dimensioni dei caratteri, il riferimento è semplicemente la dimensione dei caratteri calcolata dai genitori simile a ciò che accade con le percentuali.
Nell'esempio seguente, una dimensione del carattere di tre em sull'elemento figlio dell'intestazione produce 72 pixel semplicemente perché è tre volte la dimensione del carattere principale che è (150/100) * 16 = 24px. Per quanto riguarda la lunghezza, è solo un po 'diverso. Il riempimento 2em sull'intestazione, poiché è una misura della lunghezza, utilizza la dimensione del carattere dell'elemento corrente come riferimento e sappiamo già che è di 24 pixel, quindi 2em risulterà in un riempimento di 48 pixel, capito? È una differenza sottile, ma importante. Quando usi em, se è per i caratteri, il riferimento è il genitore e per la lunghezza, il riferimento è l'elemento corrente.
html,body{
font-size:16px;
width:80vw;
}
header{
font-size:150%;
padding 2em;
margin-bottom:10rem;
height:90vh;
widht 1000px;
}
header-child{
font-size:3em;
padding:10%;
}
Riguardo al rem, in realtà funziona allo stesso modo sia per le dimensioni che per le lunghezze dei caratteri perché utilizza sempre la dimensione del carattere principale come riferimento. Ciò significa che il riempimento di 10 rem che abbiamo qui risulterà in 160 pixel perché la dimensione del carattere radice è 16.