Projektuję nową stronę internetową i chcę, aby była zgodna z jak największą liczbą przeglądarek i ustawień przeglądarki. Próbuję zdecydować, jakiej jednostki miary powinienem użyć dla rozmiarów moich czcionek i elementów, ale nie jestem w stanie znaleźć rozstrzygającej odpowiedzi.
Moje pytanie brzmi: czy mogę używać px
albo rem
w moim CSS?
- Jak dotąd wiem, że używanie
px
nie jest zgodne z użytkownikami, którzy dostosowują swój podstawowy rozmiar czcionki w przeglądarce. - Zignorowałem
em
s, ponieważ są bardziej kłopotliwe w utrzymaniu, w porównaniu dorem
s, ponieważ kaskadowo. - Niektórzy twierdzą, że
rem
są niezależne od rozdzielczości i dlatego są bardziej pożądane. Ale inni twierdzą, że większość współczesnych przeglądarek i tak powiększa wszystkie elementy jednakowo, więc używaniepx
nie stanowi problemu.
Pytam o to, ponieważ istnieje wiele różnych opinii na temat najbardziej pożądanej miary odległości w CSS i nie jestem pewien, która z nich jest najlepsza.
html
css
distance
units-of-measurement
TylerH
źródło
źródło
Odpowiedzi:
TL; DR: użyj
px
.Fakty
Po pierwsze, niezwykle ważne jest, aby wiedzieć, że zgodnie ze specyfikacją
px
jednostka CSS nie jest równa jednemu fizycznemu pikselowi wyświetlania. To zawsze było prawdą - nawet w 1996 CSS 1 specyfikacji .CSS definiuje piksel odniesienia , który mierzy rozmiar piksela na ekranie o rozdzielczości 96 dpi. Na wyświetlaczu, który ma rozdzielczość zasadniczo różną od 96dpi (podobnie jak wyświetlacze Retina), agent użytkownika przeskalowuje
px
jednostkę, tak aby jej rozmiar był zgodny z pikselem odniesienia. Innymi słowy, to ponowne skalowanie jest dokładnie powodem, dla którego 1 piksel CSS równa się 2 fizycznym pikselom wyświetlającym siatkówkę.To powiedziawszy, do roku 2010 (i pomimo mobilnego powiększenia)
px
prawie zawsze był równy jednemu fizycznemu pikselowi, ponieważ wszystkie szeroko dostępne wyświetlacze miały około 96dpi.Rozmiary określone w
em
s odnoszą się do elementu nadrzędnego . Prowadzi to doem
„problemu łączenia”, w którym zagnieżdżone elementy stają się stopniowo większe lub mniejsze. Na przykład:Daje nam:
CSS3
rem
, który jest zawsze względny tylko dohtml
elementu głównego , jest teraz obsługiwany w 96% wszystkich używanych przeglądarek .Opinia
Myślę, że wszyscy zgadzają się, że dobrze jest zaprojektować strony tak, aby były dostosowane do wszystkich i uwzględnić osoby niedowidzące. Jednym z takich czynników (ale nie jedynym!) Jest umożliwienie użytkownikom powiększenia tekstu witryny, aby ułatwić czytanie.
Na początku jedynym sposobem zapewnienia użytkownikom możliwości skalowania rozmiaru tekstu było użycie jednostek wielkości względnej (takich jak
em
s). Wynika to z faktu, że menu rozmiaru czcionki przeglądarki po prostu zmieniło rozmiar czcionki głównej. Dlatego jeśli określisz rozmiary czcionekpx
, nie będą się skalować podczas zmiany opcji rozmiaru czcionki przeglądarki.Nowoczesne przeglądarki (a nawet niezbyt nowoczesny IE7) zmieniły domyślną metodę skalowania, aby po prostu powiększyć wszystko, w tym obrazy i rozmiary pudełek. Zasadniczo powodują, że piksel odniesienia jest większy lub mniejszy.
Tak, ktoś może jeszcze zmienić swoją przeglądarkę domyślnego arkusza stylów, aby dostosować domyślny rozmiar czcionki (odpowiednik opcji rozmiar czcionki w starym stylu), ale jest to bardzo ezoteryczny sposób idzie o to i ja bym zakład nikt 1 robi. (W Chrome jest zakopany pod zaawansowanymi ustawieniami, treściami internetowymi, rozmiarami czcionek. W IE9 jest jeszcze bardziej ukryty. Musisz nacisnąć Alt i przejść do Widok, Rozmiar tekstu.) O wiele łatwiej jest po prostu wybrać opcję Zoom w menu główne przeglądarki (lub użyj kółka myszy Ctrl+ +/ -/).
1 - oczywiście w granicach błędu statystycznego
Jeśli założymy, że większość użytkowników skaluje strony za pomocą opcji powiększenia, jednostki względne są w większości nieistotne. O wiele łatwiej jest rozwinąć stronę, gdy wszystko jest określone w tej samej jednostce (wszystkie obrazy są przetwarzane w pikselach), i nie musisz się martwić o komplikowanie. ( „Powiedziano mi, że nie będzie matematyki” - trzeba poradzić sobie z koniecznością obliczenia, na co faktycznie działa 1.5em).
Innym potencjalnym problemem związanym z używaniem tylko jednostek względnych dla rozmiarów czcionek jest to, że czcionki o zmienionych rozmiarach użytkownika mogą złamać założenia przyjęte przez układ. Może to na przykład prowadzić do przycinania lub zbyt długiego wyświetlania tekstu. Jeśli używasz jednostek bezwzględnych, nie musisz się martwić o nieoczekiwany rozmiar czcionki z powodu zepsucia układu.
Więc moją odpowiedzią jest użycie jednostek pikseli. Używam
px
do wszystkiego. Oczywiście twoja sytuacja może się różnić i jeśli musisz wspierać IE6 (niech bogowie RFC zlitują się nad tobą), i tak będziesz musiał użyćem
s.źródło
Chciałbym pochwalić odpowiedź josh3736 za zapewnienie doskonałego kontekstu historycznego. Choć jest dobrze wyartykułowany, krajobraz CSS zmienił się w ciągu prawie pięciu lat, odkąd zadano to pytanie. Kiedy zadano to pytanie,
px
była to prawidłowa odpowiedź, ale nie jest to prawdą już dzisiaj.tl; dr: use
rem
Przegląd jednostek
Historycznie
px
jednostki zwykle reprezentowały jeden piksel urządzenia. W przypadku urządzeń o coraz większej gęstości pikseli nie dotyczy to już wielu urządzeń, takich jak wyświetlacz Retina firmy Apple.rem
Jednostki reprezentują r oot em rozmiar. Tofont-size
wszystko, co pasuje:root
. W przypadku HTML jest to<html>
element; w przypadku SVG jest to<svg>
element. Domyślna wartośćfont-size
w każdej przeglądarce * to16px
.W momencie pisania
rem
jest obsługiwany przez około 98% użytkowników . Jeśli martwisz się o te 2%, przypomnę, że zapytania o media są również obsługiwane przez około 98% użytkowników .O użyciu
px
Większość przykładów CSS w Internecie wykorzystuje
px
wartości, ponieważ były one de facto standardem.pt
,in
a teoretycznie można było zastosować wiele innych jednostek , ale nie radziły sobie one dobrze z małymi wartościami, ponieważ szybko trzeba było uciekać się do ułamków, które były dłuższe do pisania i trudniejsze do uzasadnienia.Jeśli chcesz mieć cienką ramkę, z
px
którą możesz skorzystać1px
,pt
musisz użyć jej, aby0.75pt
uzyskać spójne wyniki, a to po prostu nie jest bardzo wygodne.O użyciu
rem
rem
Domyślna wartość parametru16px
nie jest zbyt silnym argumentem za jego użyciem. Pisanie0.0625rem
jest gorsze niż pisanie0.75pt
, więc dlaczego ktoś miałby z tego korzystaćrem
?Istnieją dwie części
rem
przewagi nad innymi jednostkami.px
wartośćrem
na dowolnąPoszanowanie preferencji użytkownika
Powiększenie przeglądarki bardzo się zmieniło na przestrzeni lat. Historycznie wiele przeglądarek tylko skalowało się
font-size
, ale zmieniło się to dość szybko, gdy strony zdały sobie sprawę, że ich piękne, idealnie pikselowe projekty psują się za każdym razem, gdy ktoś przybliża lub oddala obraz. W tym momencie przeglądarki skalują całą stronę, więc powiększanie na podstawie czcionek jest poza obrazem.Szanowanie życzeń użytkownika nie jest wykluczone. To, że przeglądarka jest
16px
domyślnie ustawiona , nie oznacza, że żaden użytkownik nie może zmienić swoich preferencji24px
lub32px
poprawić jej niedostatecznego widzenia lub słabej widoczności (np. Odblaski ekranu). Jeśli oprzesz swoje jednostkirem
, każdy użytkownik o większym rozmiarze czcionki zobaczy proporcjonalnie większą witrynę. Granice będą większe, wypełnienie będzie większe, marginesy będą większe, wszystko będzie płynnie skalować.Jeśli oprzesz swoje zapytania o media
rem
, możesz także upewnić się, że witryna, którą widzą użytkownicy, pasuje do ich ekranu. Użytkownik zfont-size
zestawem do32px
na640px
szerokim przeglądarce, będą skutecznie się widząc swoją stronę, jak pokazano użytkownikowi na16px
na320px
szerokim przeglądarce. Korzystanie z RWD nie wiąże się z żadnymi stratamirem
.Zmiana pozornej
px
wartościPonieważ
rem
opiera się nafont-size
tego:root
węzła, jeśli chcesz zmienić to, co1rem
reprezentuje, wszystko co musisz zrobić, to zmienićfont-size
:Cokolwiek robisz, nie ustawić
:root
elementufont-size
dopx
wartości.Jeśli ustawisz
font-size
nahtml
dopx
wartości, masz zdmuchnięte preferencji użytkownika bez sposób, aby je z powrotem.Jeśli chcesz zmienić pozorną wartość
rem
, użyj%
jednostek.Matematyka tego jest dość prosta.
Pozorny rozmiar czcionki
:root
to16px
, ale powiedzmy, że chcemy to zmienić20px
. Wszystko, co musimy zrobić, to pomnożyć16
przez pewną wartość, aby uzyskać20
.Skonfiguruj swoje równanie:
I rozwiązać dla
X
:Robienie wszystkiego w wielokrotnościach
20
nie jest wcale takie świetne, ale powszechną sugestią jest, aby pozorny rozmiar byłrem
równy10px
. Magiczna liczba to,10/16
co jest0.625
, lub62.5%
.Problem polega na tym, że domyślne ustawienie
font-size
dla reszty strony jest zbyt małe, ale jest na to prosta poprawka: Ustawfont-size
przybody
użyciurem
:Ważne jest, aby pamiętać, z tym korekty w miejscu, pozornej wartości
rem
Is10px
co oznacza dowolną wartość może masz napisane wpx
można przekształcić bezpośredniorem
przez wstawianie miejsca dziesiętnego.przemienia się w
Wybrany rozmiar czcionki zależy od Ciebie, więc jeśli chcesz, nie ma powodu, dla którego nie możesz użyć:
i mieć
1rem
równe1px
.Oto proste rozwiązanie pozwalające na poszanowanie życzeń użytkowników, przy jednoczesnym unikaniu nadmiernego komplikowania CSS.
Zaczekaj, więc co jest haczykiem?
Bałem się, że możesz o to zapytać. O ile chciałbym udawać, że
rem
to magia i wszystko rozwiązuje, wciąż są pewne ważne kwestie. Moim zdaniem nic nie łamie interesów , ale zamierzam je zawołać, żebyś nie mógł powiedzieć, że cię nie ostrzegałem.Zapytania o media (użycie
em
)Jednym z pierwszych problemów, z którymi się spotkasz, są
rem
zapytania o media. Rozważ następujący kod:Tutaj wartość
rem
zmian zależy od tego, czy zapytanie o media ma zastosowanie, a zapytanie o media zależy od wartościrem
, więc co u licha się dzieje?rem
w zapytaniach o media używa początkowej wartościfont-size
i nie powinien (patrz sekcja Safari) uwzględniać żadnych zmian, które mogły się wydarzyćfont-size
w:root
elemencie. Innymi słowy, jego pozorną wartością jest zawsze16px
.Jest to nieco irytujące, ponieważ oznacza to, że trzeba zrobić kilka obliczeń ułamkowych, ale stwierdziliśmy, że większość zapytań wspólne mediów korzysta już wartości, które są wielokrotnością 16.
Dodatkowo, jeśli korzystasz z preprocesora CSS, możesz użyć miksów lub zmiennych do zarządzania zapytaniami o media, co całkowicie zamaskuje problem.
SafariNiestety, znany jest błąd w Safari, w którym zmiany
:root
rozmiaru czcionki faktycznie zmieniają obliczonerem
wartości zakresów zapytań o media. Może to spowodować bardzo dziwne zachowanie, jeśli rozmiar czcionki:root
elementu zostanie zmieniony w zapytaniu o media. Na szczęście poprawka jest prosta: używajem
jednostek do zapytań o media .Przełączanie kontekstu
Jeśli przełączasz się między różnymi projektami, całkiem możliwe, że pozorny rozmiar czcionki
rem
będzie miał różne wartości. W jednym projekcie może być używany pozorny rozmiar,10px
gdzie w innym projekcie może być pozorny rozmiar1px
. Może to być mylące i powodować problemy.Moim jedynym zaleceniem jest pozostanie przy
62.5%
konwersjirem
do pozornego rozmiaru10px
, ponieważ było to bardziej powszechne w moim doświadczeniu.Udostępnione biblioteki CSS
Jeśli piszesz CSS, który będzie używany w witrynie, której nie kontrolujesz, na przykład w przypadku wbudowanego widżetu, naprawdę nie ma dobrego sposobu, aby dowiedzieć się, jaki
rem
będzie pozorny rozmiar . W takim przypadku możesz nadal używaćpx
.Jeśli nadal chcesz używać
rem
, rozważ wydanie wersji Sass lub LESS arkusza stylów ze zmienną, aby zastąpić skalowanie dla pozornego rozmiarurem
.* Nie chcę nikogo odstraszyć
rem
, ale nie byłem w stanie oficjalnie potwierdzić, że każda przeglądarka używa16px
domyślnie. Widzisz, istnieje wiele przeglądarek i nie byłoby wcale tak trudno, aby jedna przeglądarka tak lekko się rozdzieliła, powiedzmy15px
lub18px
. Podczas testowania nie widziałem jednak żadnego przykładu, w którym przeglądarka korzystająca z ustawień domyślnych w systemie korzystającym z ustawień domyślnych miała inną wartość niż16px
. Jeśli znajdziesz taki przykład, podziel się nim ze mną.źródło
matrix()
z javascript, który jest tłumaczeniem macierzowym używają wartości translacjipx
(popraw mnie, jeśli się mylę), i jestem tak pomylony z tym .getComputedStyle()
ale wynik jest zawsze w pikselach, więc muszę podzielić wynik przezrem
wartość (jak 16). CMIIWrem
wartość, jeśli masz już poprawnąpx
wartość, nie musisz przełączać się narem
jednostki dla rzeczy, które są już obliczone dla danego kontekstu.Ten artykuł opisuje całkiem dobrze plusy i minusy
px
,em
irem
.Autor w końcu dochodzi do wniosku, że najlepszą metodą jest prawdopodobnie użycie obu
px
irem
, deklarującpx
najpierw dla starszych przeglądarek i ponownierem
dla nowych przeglądarek:źródło
px
. Jeśli chodzi o jednostkę dla elementów, trzymanie siępx
byłoby lepsze, ponieważ zwykle chcesz precyzyjnie dopasować rozmiar elementów.px
jest umożliwienie zmiany rozmiaru. Teraz, jeśli korzystamyrem
, nadal musimy zapewnićpx
rezerwę (w starszych przeglądarkach). Zasadniczo oznacza to, żepx
zmiana rozmiaru wsparcia jest lepsza niżrem
. Nowsze przeglądarki obsługująpx
zmianę rozmiaru, a dla starszych przeglądarek w dowolny sposób, do którego będziemy wracaćpx
. Teraz, bazując na świetle tego wniosku, jestem bardzo zainteresowany wiedząc, po co korzystaćrem
? Jeśli widzę światło na końcu tunelu.Jako odpowiedź odruchową zaleciłbym użycie rem, ponieważ pozwala to zmienić „poziom powiększenia” całego dokumentu na raz, jeśli to konieczne. W niektórych przypadkach, jeśli chcesz, aby rozmiar był względny względem elementu nadrzędnego, użyj em.
Ale wsparcie rem jest nierówne, IE8 potrzebuje wypełniania, a Webkit wyświetla błąd. Co więcej, obliczenia subpikselowe mogą czasami powodować znikanie linii, takich jak linie jednego piksela. Rozwiązaniem jest kodowanie w pikselach dla tak bardzo małych elementów. To wprowadza jeszcze większą złożoność.
Ogólnie rzecz biorąc, zadaj sobie pytanie, czy warto - jak ważna i prawdopodobna jest zmiana „poziomu powiększenia” całego dokumentu w CSS?
W niektórych przypadkach tak, w niektórych przypadkach nie.
To zależy od twoich potrzeb i musisz rozważyć zalety i wady, ponieważ użycie rem i em wprowadza dodatkowe uwagi w porównaniu do „normalnego” przepływu pracy opartego na pikselach.
Pamiętaj, że łatwo jest zmienić (a raczej przekonwertować) CSS z px na rem (JavaScript to inna historia), ponieważ następujące dwa bloki kodu CSS dałyby ten sam wynik:
źródło
Tak, REM i PX są względne, ale inne odpowiedzi sugerują, aby wybrać REM zamiast PX, chciałbym również wykonać kopię zapasową na przykładzie dostępności.
Gdy użytkownik ustawia inny rozmiar czcionki w przeglądarce, REM automatycznie skaluje w górę i w dół elementy, takie jak czcionki, obrazy itp. Na stronie internetowej, co nie ma miejsca w PX.
W poniższym gif tekst po lewej stronie jest ustawiany za pomocą jednostki REM wielkości czcionki, natomiast czcionka po prawej stronie jest ustawiana przez jednostkę PX.
Domyślny rozmiar czcionki strony to 16px, co jest równe 1 rem (tylko dla domyślnej strony HTML, tj.
html{font-size:100%}
), Więc 1,25rem jest równy 20px.PS: kto jeszcze korzysta z REM? Szkielety CSS! jak Bootstrap 4, Bulma CSS itp., więc lepiej się z tym pogódź.
źródło
Odpowiedź josh3736 jest dobra, ale 3 lata później stanowi kontrapunkt:
Polecam używanie
rem
jednostek dla czcionek, choćby dlatego, że ułatwia ciebie , autora, do wielkości zmiany. Prawdą jest, że użytkownicy bardzo rzadko zmieniają domyślny rozmiar czcionki w swoich przeglądarkach, a nowoczesne powiększenie przeglądarki skalujepx
jednostki. Ale co, jeśli twój szef do ciebie przyjdzie i powie „nie powiększaj obrazów ani ikon, ale powiększ wszystkie czcionki”. O wiele łatwiej jest po prostu zmienić rozmiar czcionki głównej i pozwolić wszystkim pozostałym czcionkom przeskalować się względem tego, a następnie zmienićpx
rozmiary w dziesiątkach lub setkach reguł css.Myślę, że nadal warto stosować
px
jednostki dla niektórych obrazów lub dla niektórych elementów układu, które zawsze powinny mieć ten sam rozmiar, niezależnie od skali projektu.Caniuse.com mógł powiedzieć, że tylko 75% przeglądarek, kiedy josh3736 opublikował swoją odpowiedź w 2012 roku, ale 27 marca deklaruje wsparcie na poziomie 93,78% . Tylko IE8 nie obsługuje go wśród przeglądanych przeglądarek.
źródło
Only IE8 doesn't support it among the browsers they track.
Co? Połączona strona stwierdza, że „IE9 i IE10 nie obsługują jednostek rem, gdy są używane we właściwości skrótu czcionek lub w przypadku pseudoelementów. IE9, 10 i 11 nie obsługują jednostek rem, gdy są używane we właściwości wysokości linii, gdy są używane na: przed i po pseudoelementach. Granice wielkości w rem znikają, gdy strona jest pomniejszona w Chrome. Nie działa w przeglądarce Samsung Note II Android 4.3 i Samsung Galaxy Tab 2 w Androidzie 4.2. W Chrome 31-34 i systemie Android z Chrome (jak 4.4) występuje błąd rozmiaru czcionki, gdy element główny ma rozmiar procentowy. ”as of March 27 they claim 93.78% support.
W momencie pisania tego komentarza caniuse pokazuje jedynie 91,79% pełnej obsługi przeglądarki. Patrząc na swój procent, jestem pewien, że uwzględniłeś także obsługę błędnych przeglądarek (obecnie 2,8%, co można interpretować jako optymistyczne 94,6% ogólnego zasięgu - ale faktem jest, że te 2,8% ma wadliwe, niekompletne lub nawet całkowicie brak wsparcia ... jak zauważono w moim poprzednim komentarzu: każdy błąd jest wynikiem innej wersji przeglądarki i kombinacji systemu operacyjnego.) Możesz odpowiednio poprawić swoją odpowiedź ...Znalazłem najlepszy sposób na zaprogramowanie rozmiarów czcionek na stronie internetowej, aby zdefiniować podstawowy rozmiar czcionki dla,
body
a następnie użyć em (lub rem) dla każdej innejfont-size
deklarowanej później. Wydaje mi się, że to osobiste preferencje, ale dobrze mi to służyło, a także umożliwiło włączenie bardziej responsywnego projektu .Jeśli chodzi o korzystanie z jednostek rem, myślę, że dobrze jest znaleźć równowagę między postępem w kodzie, ale także zaoferować wsparcie dla starszych przeglądarek. Sprawdź ten link na temat obsługi przeglądarek dla jednostek rem , które powinny pomóc w podjęciu właściwej decyzji.
źródło
body
rozmiar czcionki i wszystko się zmienia.pt
jest podobny do tegorem
, że jest względnie naprawiony, ale prawie zawsze niezależny od DPI, nawet jeśli niezgodne przeglądarki traktująpx
w sposób zależny od urządzenia.rem
różni się w zależności od rozmiaru czcionki elementu głównego, ale możesz użyć czegoś takiego jak Sass / Compass, aby zrobić to automatyczniept
.Jeśli miałeś to:
wtedy
1rem
zawsze będzie12pt
.rem
iem
są tak niezależne od urządzenia, jak elementy, na których polegają; niektóre przeglądarki nie zachowują się zgodnie ze specyfikacją i traktująpx
dosłownie. Nawet w dawnych czasach Internetu, 1 punkt był konsekwentnie uważany za 1/72 cala - to znaczy 72 punkty na cal.Jeśli masz starą, niezgodną przeglądarkę i masz:
następnie
1rem
będzie uzależnione od urządzenia. W przypadku elementów, którehtml
domyślnie dziedziczyłyby ,1em
zależałyby również od urządzenia.12pt
byłby, miejmy nadzieję , odpowiednikiem niezależnym od urządzenia:16px / 96px * 72pt = 12pt
gdzie96px = 72pt = 1in
.Wykonywanie matematyki może być bardzo skomplikowane, jeśli chcesz trzymać się określonych jednostek. Na przykład
.75em of html = .75rem = 9pt
i.66em of .75em of html = .5rem = 6pt
. Dobra zasada praktyczna:pt
do absolutnych rozmiarów. Jeśli naprawdę potrzebujesz dynamiki w stosunku do elementu głównego, pytasz o zbyt wiele CSS; potrzebujesz języka kompilującego się do CSS, takiego jak Sass / SCSS.em
do względnych rozmiarów. Łatwo jest powiedzieć: „Chcę, aby margines po lewej stronie był mniej więcej na maksymalnej szerokości litery”, lub „Spraw, aby tekst tego elementu był nieco większy niż jego otoczenie”.<h1>
jest dobrym elementem do użycia rozmiaru czcionki w ems, ponieważ może pojawiać się w różnych miejscach, ale zawsze powinien być większy niż tekst w pobliżu. W ten sposób nie musisz mieć osobnego rozmiaru czcionki dla każdej zastosowanej klasyh1
: rozmiar czcionki dostosuje się automatycznie.px
do bardzo małych rozmiarów. Przy bardzo małych rozmiarachpt
może się rozmywać w niektórych przeglądarkach przy 96 DPI, ponieważpt
ipx
nie do końca są w linii. Jeśli chcesz po prostu utworzyć cienką, jednopikselową ramkę, powiedz tak. Jeśli masz wyświetlacz o wysokiej rozdzielczości, nie będzie to dla ciebie oczywiste podczas testowania, więc w pewnym momencie należy przetestować na standardowym wyświetlaczu o rozdzielczości 96 DPI.źródło
Połowa (ale tylko połowa) snarky odpowiedź (druga połowa to gorzka pogarda dla rzeczywistości biurokracji):
Użyj vh
Wszystko jest zawsze dopasowane do okna przeglądarki.
Zawsze zezwalaj na przewijanie w dół, nigdy w bok.
Ustaw szerokość ciała na statyczną 50vh i nic nie unosi się ani nie wybija z nadrzędnego div. Stylizuj tylko za pomocą stołów, aby wszystko było sztywno ustawione zgodnie z oczekiwaniami. Dołącz funkcję javascript, aby cofnąć dowolną czynność Ctrl +/-, którą może wykonać użytkownik.
Wszyscy będą cię nienawidzić, z wyjątkiem ludzi, którzy każą ci dopasowywać rzeczy do ich makiety, a oni będą zachwyceni. I wszyscy wiedzą, że ich opinia jest jedyną, która się liczy.
źródło
Tak. A raczej nie.
To znaczy, to nie ma znaczenia. Użyj tego, który ma sens dla twojego konkretnego projektu. PX i EM lub oba są równie ważne, ale będą się nieco różnić w zależności od ogólnej architektury CSS strony.
AKTUALIZACJA:
Aby to wyjaśnić, stwierdzam, że zwykle nie ma znaczenia, którego używasz. Czasami możesz chcieć wybrać jedną z nich. EM są fajne, jeśli możesz zacząć od zera i chcesz użyć podstawowego rozmiaru czcionki i dopasować wszystko do tego.
PX są często potrzebne, gdy modernizujesz przeprojektowanie do istniejącej bazy kodu i potrzebujesz specyfiki px, aby uniknąć problemów z zagnieżdżaniem.
źródło
em jest drogą naprzód, nie tylko dla czcionek, ale możesz ich używać z ramkami, grubością linii i innymi rzeczami, dlaczego?
Mówiąc wprost, tylko one są skalowane zgodnie z klawiszami alt + i alt- w przeglądarce w celu powiększania.
Inne pomiary są skalowane, ale nie tak czysto jak em.
Na marginesie, jeśli chcesz uzyskać najlepsze skalowanie, również w miarę możliwości przekonwertuj swoją grafikę do SVG opartego na wektorze, ponieważ będą one również skalować się przy współczynniku powiększenia przeglądarki.
źródło
EM są TYLKO rzeczą, która skaluje się w przypadku zapytań o media, które obsługują skalowanie +/-, które ludzie robią cały czas, nie tylko osoby niewidome. Oto kolejna bardzo dobrze napisana profesjonalna demonstracja, dlaczego to tak ważne.
Nawiasem mówiąc, właśnie dlatego Zurb Foundation używa ems , podczas gdy gorszy Bootstrap 3 nadal używa pikseli.
źródło