Rozumiem po przeczytaniu wątków takich jak ten, że celem ems jest zdefiniowanie wszystkich pomiarów na twojej stronie, według podstawowego rozmiaru czcionki , który można ustawić w przeglądarce.
Na przykład w Chrome możesz to zrobić, przechodząc settings -> show advanced settings -> web content -> font size: very large
. Mógłbym to zrobić, gdybym używał dużego monitora o wysokiej rozdzielczości, który był daleko.
Stworzyłem plunker, który pokazuje różnicę między wielkością ems a px.
#div1 {
width: 320px
}
#div2 {
width: 20em;
}
Jeśli w mojej przeglądarce ustawię rozmiar czcionki na średni, te div będą tego samego rozmiaru, podstawowy rozmiar czcionki to 16px, więc 20em = 320px.
Kiedy jednak zmieniam rozmiar czcionki przeglądarki na bardzo duży, widzimy, że div zmierzony w ems zwiększył rozmiar.
Efekt ten zostanie jednak zanegowany, jeśli na przykład zdefiniuję rozmiar czcionki w znaczniku body.
body {
font-size: 16px;
}
Ponieważ teraz mój css zastępuje rozmiar czcionki ustawiony przez przeglądarkę.
Rozumiem, że ems byłby ważny w czasach starszych przeglądarek, gdzie powiększanie strony tylko skalowało czcionki. Ale w dzisiejszych czasach nowoczesne przeglądarki skalują zarówno piksele, jak i czcionki, co sprawia, że problem powiększania jest dyskusyjny.
Rozglądając się po internecie - wiele stron internetowych zrobić zestaw rozmiar czcionki w tagu ciała.
Na przykład przepełnienie stosu ustawia rozmiar czcionki na 13 pikseli w znaczniku body. Ustawienie rozmiaru czcionki w mojej przeglądarce nie ma najmniejszego wpływu na układ Przepełnienia stosu.
Wyniki wyszukiwania Google tego nie robią.
(oba te zrzuty ekranu wykonane przy bardzo dużym rozmiarze czcionki chromowanej i powiększeniu 100%).
Być może więc można argumentować, że ustawienie rozmiaru czcionki w znaczniku body jest złym pomysłem, ponieważ uniemożliwia własne ustawienia dostępności użytkownika. Ale biorąc pod uwagę, że użytkownik może powiększyć, aby zwiększyć rozmiary (co proporcjonalnie zwiększy również wszystkie piksele) - nie wydaje się to prawdziwym problemem.
body { font-size: XYZ; }
użycie arkusza stylów użytkownika za pomocąbody { font-size: ZYX !important; }