em i rem są jednostkami względnymi opartymi na czcionkach i różnie jest używać em dla czcionek lub długości, więc zarówno em, jak i rem są oparte na czcionkach, ale różnica między nimi polega na tym, że ems używają elementu nadrzędnego lub bieżącego elementu jako odniesienia, podczas gdy rems użyj rozmiaru czcionki głównej jako odniesienia.
Jeśli chcemy użyć em dla rozmiarów czcionek, odniesieniem jest po prostu obliczony rozmiar czcionki przez rodziców podobny do tego, co dzieje się z procentami.
W poniższym przykładzie rozmiar czcionki trzech em w elemencie potomnym nagłówka daje w wyniku 72 piksele po prostu dlatego, że jest to trzykrotność rozmiaru czcionki nadrzędnej, czyli (150/100) * 16 = 24 piksele. Teraz jest trochę inaczej. Wypełnienie 2em w nagłówku, ponieważ jest to pomiar długości, używa rozmiaru czcionki bieżącego elementu jako odniesienia i wiemy już, że to 24 piksele, więc 2em da w wyniku wypełnienie 48 pikseli, rozumiesz? To subtelna różnica, ale ważna. Kiedy używasz em, jeśli jest to dla czcionek, odniesienie jest elementem nadrzędnym, a dla długości odniesieniem jest bieżący element.
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%;
}
Jeśli chodzi o rem, w rzeczywistości działa w ten sam sposób zarówno dla rozmiarów, jak i długości czcionek, ponieważ zawsze używa jako odniesienia tylko rozmiaru czcionki głównej. Oznacza to, że wypełnienie 10 rem, które mamy tutaj, da 160 pikseli, ponieważ rozmiar czcionki głównej to 16.