Czy ustawiając rozmiar czcionek w CSS, powinienem używać wartości procentowej ( %) czy em? Czy możesz wyjaśnić zalety?
Czy ustawiając rozmiar czcionek w CSS, powinienem używać wartości procentowej ( %) czy em? Czy możesz wyjaśnić zalety?
Odpowiedzi:
W A List Apart jest naprawdę dobry artykuł o typografii internetowej .
Ich wniosek:
Wykazano, że rozmiar tekstu i wysokość linii w emach, z procentem określonym w treści (i opcjonalnym zastrzeżeniem dla Safari 2), zapewnia dokładny tekst z możliwością zmiany rozmiaru we wszystkich powszechnie używanych przeglądarkach. Jest to technika, którą możesz włożyć do torby i użyć jako sprawdzonej metody określania rozmiaru tekstu w CSS, która zadowoli zarówno projektantów, jak i czytelników.
line-heightssą lepiej napisane bez żadnych jednostek. Jest to dozwolone przez specyfikację i całkowicie pozwala uniknąć pewnych naprawdę irytujących dziwactw przeglądarki, jeśli chodzi o emwysokości linii
1. Na przykład iPhone 4 ma fizyczną szerokość ekranu 640 pikseli, ale jest wyświetlany jako 320 pikseli „CSS” (DPR = 2). Więc strona nie wydaje się mniejsza!
Z http://archivist.incutio.com/viewlist/css-discuss/1408
%: Niektóre przeglądarki nie obsługują procentu dla rozmiaru czcionki, ale interpretują 150% jako 150 pikseli. (Na przykład niektóre wersje NN4). IE również ma problemy z procentami w elementach zagnieżdżonych. Wygląda na to, że IE używa procentu względem widocznego obszaru zamiast względnego względem elementu nadrzędnego. Kolejny problem (choć poprawny zgodnie ze specyfikacją W3C), w Moz / Ns6 nie można używać procentów względem elementów bez określonej wysokości / szerokości.
em: Czasami przeglądarki używają niewłaściwego rozmiaru odniesienia, ale spośród jednostek względnych jest to ta z najmniejszymi problemami. Czasami może się jednak okazać, że jest interpretowane jako px.
pt: Różni się znacznie między rozdzielczościami i nie powinien być używany do wyświetlania. Jest jednak całkiem bezpieczny do użytku w druku.
px: jedyna niezawodna jednostka absolutna na ekranie. Może to jednak zostać błędnie zinterpretowane w druku, ponieważ jeden punkt składa się zwykle z kilku pikseli, przez co wszystko staje się śmiesznie małe.
Oba dostosowują rozmiar czcionki w stosunku do tego, jaki był. 1.5em to to samo, co 150%. Jedyną zaletą wydaje się być czytelność, wybierz tę, która najbardziej Ci odpowiada.
Prawdziwa różnica jest widoczna, gdy używasz jej nie dla rozmiarów czcionek. Ustawianie paddingz 1emnie jest taki sam jak 100%. emjest zawsze zależna od rozmiaru czcionki. Ale %może być zależne od rozmiaru czcionki, szerokości, wysokości i prawdopodobnie kilku innych rzeczy, o których nie wiem.
Biorąc pod uwagę, że (prawie?) Wszystkie przeglądarki zmieniają teraz rozmiar strony jako całości, a nie tylko tekstu, poprzednie problemy z pxwersją %vs. ems, jeśli chodzi o zmianę rozmiaru dostępnej czcionki, są raczej dyskusyjne.
Tak więc odpowiedź brzmi, że prawdopodobnie nie ma to znaczenia. Użyj tego, co Ci odpowiada.
%jest fajny, ponieważ pozwala na względną zmianę rozmiaru.
pxjest fajny, ponieważ podczas korzystania z niego dość łatwo jest zarządzać oczekiwaniami.
emmoże być przydatny, gdy jest również używany do elementów układu, ponieważ umożliwia proporcjonalne dopasowanie rozmiaru do rozmiaru tekstu.
emNa przykład versus . Poza tym uważam, że odpowiedzi na SO powinny starać się być ponadczasowe - w końcu to baza wiedzy. Wikipedia programowania :) Ponieważ Wikipedia jest aktualizowana, aby odzwierciedlała fakty, tak moim skromnym zdaniem powinny być odpowiedzi SO.
Jeśli chodzi o różnicę między jednostkami CSS %i em.
O ile mi zrozumieć (przynajmniej teoretycznie / koncepcyjnie, ale być może nie w jaki sposób te dwie jednostki mogą być realizowane w przeglądarkach) te dwa zespoły są równoważne, to znaczy, jeśli pomnożyć emwartość z 100a następnie wymienić emz %nim powinno być to samo?
Jeśli rzeczywiście istnieje jakaś prawdziwa różnica między em a%, to czy ktoś może to wyjaśnić (lub podać link do wyjaśnienia)?
(Chciałem dodać ten komentarz mój, gdzie by należał, tj. Wcięty tuż pod odpowiedzią, "Liam, answered Sep 25 '08 at 11:21"ponieważ chcę również wiedzieć, dlaczego jego odpowiedź została odrzucona, ale nie mogłem wymyślić, jak umieścić tam mój komentarz i dlatego musiałem napisać ta „globalna odpowiedź wątku”)
Jak wspomina Galwegian, px jest najbardziej niezawodny w typografii internetowej, ponieważ wszystko inne, co robisz na stronie, jest głównie rozłożone w odniesieniu do monitora komputera. Problem z rozmiarami bezwzględnymi polega na tym, że niektóre przeglądarki (IE) nie skalują elementów wartości w pikselach na stronie internetowej, więc kiedy próbujesz powiększyć / pomniejszyć, wszystko dostosowuje się z wyjątkiem tych elementów.
Nie wiem, czy IE8 radzi sobie z tym poprawnie, ale wszyscy inni dostawcy przeglądarek obsługują piksele dobrze i nadal jest to przypadek mniejszości, w którym użytkownik musi powiększyć / pomniejszyć tekst (to pole tekstowe na SO może być wyjątkiem). Jeśli chcesz być naprawdę brudny, zawsze możesz dodać funkcję javascript, aby zwiększyć rozmiar tekstu i zaoferować użytkownikowi przycisk „mały” / „większy”.
Biblioteka interfejsu użytkownika Yahoo ( http://developer.yahoo.com/yui/ ) ma ładny zestaw podstawowych klas css używanych do "resetowania" ustawień specyficznych dla przeglądarki tak, aby podstawa wyświetlania strony była taka sama dla wszystkich (obsługiwane) przeglądarki.
W przypadku YUI należy używać procentów.