Ich entwerfe eine neue Website und möchte, dass sie mit möglichst vielen Browsern und Browsereinstellungen kompatibel ist. Ich versuche zu entscheiden, welche Maßeinheit ich für die Größe meiner Schriftarten und Elemente verwenden soll, kann jedoch keine endgültige Antwort finden.
Meine Frage ist: Soll ich px
oder rem
in meinem CSS verwenden?
- Bisher weiß ich, dass die Verwendung
px
nicht mit Benutzern kompatibel ist, die ihre Basisschriftgröße in ihrem Browser anpassen. - Ich habe
em
s ignoriert, weil es im Vergleich zurem
s schwieriger ist, sie zu warten , da sie kaskadieren. - Einige sagen, dass
rem
s auflösungsunabhängig und daher wünschenswerter sind. Andere sagen jedoch, dass die meisten modernen Browser ohnehin alle Elemente gleich zoomen, sodass die Verwendungpx
kein Problem darstellt.
Ich frage dies, weil es viele unterschiedliche Meinungen darüber gibt, was das wünschenswerteste Maß für die Entfernung in CSS ist, und ich bin mir nicht sicher, welches das beste ist.
html
css
distance
units-of-measurement
TylerH
quelle
quelle
Antworten:
TL; DR: verwenden
px
.Die Fakten
Erstens ist es äußerst wichtig zu wissen, dass die CSS- Einheit pro Spezifikation nicht einem physischen Anzeigepixel entspricht. Dies war schon immer so - auch in der CSS 1-Spezifikation von 1996 .
px
CSS definiert das Referenzpixel , das die Größe eines Pixels auf einem 96-dpi-Display misst. Auf einem Display mit einer wesentlich anderen dpi als 96 dpi (wie bei Retina-Displays) skaliert der Benutzeragent das
px
Gerät neu, sodass seine Größe mit der eines Referenzpixels übereinstimmt. Mit anderen Worten, diese Neuskalierung ist genau der Grund, warum 1 CSS-Pixel 2 physischen Retina-Anzeigepixeln entspricht.Bis 2010 (und ungeachtet der Situation mit dem mobilen Zoom) entsprach das
px
fast immer einem physischen Pixel, da alle weit verbreiteten Displays etwa 96 dpi hatten.Die in
em
s angegebenen Größen beziehen sich auf das übergeordnete Element . Dies führt zu demem
"Compounding-Problem", bei dem verschachtelte Elemente zunehmend größer oder kleiner werden. Zum Beispiel:Gibt uns:
Das CSS3
rem
, das immer nur relativ zum Stammelementhtml
ist, wird jetzt von 96% aller verwendeten Browser unterstützt .Die Meinung
Ich denke, alle sind sich einig, dass es gut ist, Ihre Seiten so zu gestalten, dass sie allen gerecht werden und Sehbehinderte berücksichtigen. Eine solche Überlegung (aber nicht die einzige!) Ist, dass Benutzer den Text Ihrer Website vergrößern können, damit er leichter zu lesen ist.
Am Anfang war die einzige Möglichkeit, Benutzern eine Möglichkeit zum Skalieren der Textgröße zu bieten, die Verwendung relativer Größeneinheiten (z. B.
em
s). Dies liegt daran, dass das Schriftgrößenmenü des Browsers einfach die Root-Schriftgröße geändert hat. Wenn Sie also Schriftgrößen in angebenpx
, werden diese beim Ändern der Schriftgrößenoption des Browsers nicht skaliert.Moderne Browser (und sogar der nicht ganz so moderne IE7) haben die Standardskalierungsmethode dahingehend geändert, dass sie einfach alles vergrößern, einschließlich Bilder und Boxgrößen. Im Wesentlichen machen sie das Referenzpixel größer oder kleiner.
Ja, jemand könnte noch ihren Browser Standard - Stylesheet ändert die Standardschriftgröße (entspricht die alten Stil Schriftgröße Option) zu optimieren, aber das ist ein sehr esoterischer Weg zu gehen darüber und ich würde wetten , niemand 1 tut es. (In Chrome ist es unter den erweiterten Einstellungen, Webinhalten und Schriftgrößen vergraben. In IE9 ist es noch versteckter. Sie müssen Alt drücken und zu Ansicht, Textgröße wechseln.) Es ist viel einfacher, einfach die Option Vergrößern auszuwählen das Hauptmenü des Browsers (oder verwenden Sie das Ctrl+ +/ -/ Mausrad).
1 - natürlich innerhalb eines statistischen Fehlers
Wenn wir davon ausgehen, dass die meisten Benutzer Seiten mit der Zoomoption skalieren, finde ich relative Einheiten meistens irrelevant. Es ist viel einfacher, Ihre Seite zu entwickeln, wenn alles in derselben Einheit angegeben ist (Bilder werden alle in Pixel behandelt), und Sie müssen sich keine Gedanken über das Zusammensetzen machen. ( "Mir wurde gesagt, dass es keine Mathematik geben würde" - es geht darum, berechnen zu müssen, was 1.5em tatsächlich bewirkt.)
Ein weiteres potenzielles Problem bei der Verwendung nur relativer Einheiten für Schriftgrößen besteht darin, dass benutzerdefinierte Schriftarten möglicherweise die Annahmen Ihres Layouts verletzen. Dies kann beispielsweise dazu führen, dass Text abgeschnitten wird oder zu lange läuft. Wenn Sie absolute Einheiten verwenden, müssen Sie sich keine Sorgen machen, dass unerwartete Schriftgrößen Ihr Layout beschädigen.
Meine Antwort lautet also Pixeleinheiten verwenden. Ich benutze
px
für alles. Natürlich kann Ihre Situation variieren, und wenn Sie IE6 unterstützen müssen (mögen die Götter der RFCs sich Ihrer erbarmen), müssen Sieem
trotzdem s verwenden.quelle
Ich möchte die Antwort von josh3736 für die Bereitstellung eines hervorragenden historischen Kontextes loben . Obwohl es gut artikuliert ist, hat sich die CSS-Landschaft in den fast fünf Jahren seit dieser Frage geändert. Als diese Frage gestellt wurde,
px
war die richtige Antwort, aber das gilt heute nicht mehr.tl; dr: verwenden
rem
Geräteübersicht
Historisch gesehen
px
repräsentierten Einheiten typischerweise ein Gerätepixel. Bei Geräten mit immer höherer Pixeldichte gilt dies nicht mehr für viele Geräte, z. B. beim Apple Retina Display.rem
Einheiten stellen die r oot em Größe. Es ist das,font-size
was auch immer passt:root
. Im Fall von HTML ist es das<html>
Element; Für SVG ist es das<svg>
Element. Die Standardeinstellungfont-size
in jedem Browser * ist16px
.Zum Zeitpunkt des Schreibens
rem
wird von ca. 98% der Benutzer unterstützt . Wenn Sie sich über diese anderen 2% Sorgen machen, möchte ich Sie daran erinnern, dass Medienabfragen auch von ungefähr 98% der Benutzer unterstützt werden .Bei Verwendung
px
Die meisten CSS-Beispiele im Internet verwenden
px
Werte, da sie de facto der Standard waren.pt
,in
Und eine Vielzahl von anderen Einheiten könnte wurde in der Theorie verwendet, aber sie haben nicht kleine Werte gut behandeln , wie Sie schnell Fraktionen zu greifen brauchen würden, die länger Typen waren, und schwerer zu Grunde über.Wenn Sie einen dünnen Rand wünschen, den
px
Sie verwenden können1px
, müssenpt
Sie ihn0.75pt
für konsistente Ergebnisse verwenden, und das ist einfach nicht sehr praktisch.Bei Verwendung
rem
rem
Der Standardwert von16px
ist kein sehr starkes Argument für seine Verwendung. Schreiben0.0625rem
ist schlimmer als Schreiben0.75pt
. Warum sollte jemand etwas verwendenrem
?Es gibt zwei Teile,
rem
die gegenüber anderen Einheiten von Vorteil sind.px
Wert vonrem
nach Belieben ändernBenutzereinstellungen respektieren
Der Browser-Zoom hat sich im Laufe der Jahre stark verändert. Historisch gesehen wurden viele Browser nur
font-size
vergrößert, aber das änderte sich ziemlich schnell, als Websites erkannten, dass ihre wunderschönen pixelgenauen Designs jedes Mal kaputt gingen, wenn jemand hinein- oder herauszoomte. Zu diesem Zeitpunkt skalieren Browser die gesamte Seite, sodass das Zoomen auf Schriftart nicht mehr im Bild angezeigt wird.Das Respektieren der Wünsche eines Benutzers ist nicht ausgeschlossen. Nur weil ein Browser
16px
standardmäßig eingestellt ist, bedeutet dies nicht, dass ein Benutzer seine Einstellungen nicht ändern24px
oder32px
korrigieren kann, um Sehbehinderung oder schlechte Sichtbarkeit (ohne Blendung auf dem Bildschirm) zu korrigieren. Wenn Sie Ihre Einheiten auf Basis von verwendenrem
, wird jedem Benutzer mit einer höheren Schriftgröße eine proportional größere Site angezeigt. Die Ränder werden größer, die Polsterung wird größer, die Ränder werden größer, alles wird flüssig skaliert.Wenn Sie Ihre Medienabfragen darauf basieren
rem
, können Sie auch sicherstellen, dass die Site, die Ihre Benutzer sehen, zu ihrem Bildschirm passt. Ein Benutzerfont-size
, der in32px
einem640px
breiten Browser auf eingestellt ist, sieht Ihre Site effektiv so, wie sie einem Benutzer in16px
einem320px
breiten Browser angezeigt wird. Es gibt absolut keinen Verlust für RWD bei der Verwendungrem
.Scheinbaren
px
Wert ändernDa
rem
auf der Basisfont-size
des:root
Knotens, wenn Sie ändern möchten , was1rem
bedeutet, alles , was Sie tun müssen, ist die Änderungfont-size
:Was auch immer Sie tun, setzen Sie die
:root
Elemente nichtfont-size
auf einenpx
Wert.Wenn Sie das Set
font-size
aufhtml
auf einenpx
Wert, haben Sie die Einstellungen des Benutzers ohne eine Möglichkeit weggeblasen , um sie zurück zu bekommen.Wenn Sie den scheinbaren Wert von ändern möchten
rem
, verwenden Sie%
Einheiten.Die Mathematik dafür ist ziemlich einfach.
Die scheinbare Schriftgröße von
:root
ist16px
, aber nehmen wir an, wir möchten sie ändern20px
. Alles was wir tun müssen, ist16
mit einem Wert zu multiplizieren, um zu erhalten20
.Stellen Sie Ihre Gleichung auf:
Und lösen für
X
:Alles in Vielfachen zu tun
20
ist nicht so toll, aber ein häufiger Vorschlag ist, die scheinbare Größerem
gleich zu machen10px
. Die magische Zahl dafür10/16
ist0.625
, oder62.5%
.Das Problem ist jetzt, dass Ihre Standardeinstellung
font-size
für den Rest der Seite viel zu klein eingestellt ist, aber es gibt eine einfache Lösung dafür: Setzen Sie einfont-size
aufbody
mitrem
:Es ist wichtig zu beachten, dass bei dieser Anpassung der scheinbare Wert von
rem
ist,10px
was bedeutet, dass jeder Wert, den Sie möglicherweise geschrieben haben,px
direktrem
durch Anstoßen einer Dezimalstelle konvertiert werden kann .verwandelt sich in
Die scheinbare Schriftgröße, die Sie wählen, liegt bei Ihnen. Wenn Sie also möchten, gibt es keinen Grund, den Sie nicht verwenden können:
und haben
1rem
gleich1px
.Da haben Sie es also, eine einfache Lösung, um Benutzerwünsche zu respektieren und gleichzeitig zu vermeiden, dass Ihr CSS zu kompliziert wird.
Warten Sie, was ist der Haken?
Ich hatte Angst, Sie könnten das fragen. So sehr ich vorgeben möchte, dass dies
rem
Magie ist und alles löst, gibt es immer noch einige wichtige Punkte. Meiner Meinung nach ist das kein Deal-Breaking , aber ich werde sie anrufen, damit Sie nicht sagen können, dass ich Sie nicht gewarnt habe.Medienabfragen (Verwendung
em
)Eines der ersten Probleme, mit denen Sie konfrontiert werden, sind
rem
Medienabfragen. Betrachten Sie den folgenden Code:Hier
rem
hängt der Wert von Änderungen davon ab, ob die Medienabfrage angewendet wird, und die Medienabfrage hängt vom Wert von abrem
. Was um alles in der Welt ist also los?rem
Bei Medienabfragen wird der Anfangswert von verwendetfont-size
und sollte (siehe Abschnitt Safari) keine Änderungen berücksichtigen, die möglicherweisefont-size
am:root
Element vorgenommen wurden. Mit anderen Worten, der scheinbare Wert ist immer16px
.Dies ist etwas ärgerlich, da es bedeutet, dass Sie einige Teilberechnungen durchführen müssen, aber ich habe festgestellt, dass die meisten gängigen Medienabfragen bereits Werte verwenden, die ein Vielfaches von 16 sind.
Wenn Sie einen CSS-Präprozessor verwenden, können Sie außerdem Mixins oder Variablen verwenden, um Ihre Medienabfragen zu verwalten, wodurch das Problem vollständig maskiert wird.
SafariLeider ist ein Fehler in Safari bekannt, bei dem Änderungen an der
:root
Schriftgröße tatsächlich die berechnetenrem
Werte für Medienabfragebereiche ändern . Dies kann zu einem sehr merkwürdigen Verhalten führen, wenn die Schriftgröße des:root
Elements innerhalb einer Medienabfrage geändert wird. Glücklicherweise ist das Update einfach: Verwenden Sieem
Einheiten für Medienabfragen .Kontextwechsel
Wenn Sie zwischen verschiedenen Projekten wechseln, ist es durchaus möglich, dass die scheinbare Schriftgröße von
rem
unterschiedliche Werte hat. In einem Projekt verwenden Sie möglicherweise eine scheinbare Größe, in der10px
in einem anderen Projekt die scheinbare Größe liegt1px
. Dies kann verwirrend sein und Probleme verursachen.Meine einzige Empfehlung hier ist
62.5%
,rem
bei einer scheinbaren Größe von zu bleiben10px
, da dies meiner Erfahrung nach häufiger vorkommt.Gemeinsame CSS-Bibliotheken
Wenn Sie CSS schreiben, das auf einer Site verwendet wird, die Sie nicht steuern, z. B. für ein eingebettetes Widget, gibt es keine gute Möglichkeit, die scheinbare Größe zu ermitteln
rem
. Wenn dies der Fall ist, können Sie es weiterhin verwendenpx
.Wenn Sie dennoch verwenden möchten, sollten Sie
rem
eine Sass- oder WENIGER-Version des Stylesheets mit einer Variablen freigeben, um die Skalierung für die scheinbare Größe von zu überschreibenrem
.* Ich möchte niemanden davon abhalten, etwas zu verwenden
rem
, aber ich konnte nicht offiziell bestätigen, dass jeder Browser16px
standardmäßig verwendet. Sie sehen, es gibt viele Browser, und es wäre nicht allzu schwer für einen Browser, so leicht davon abzuweichen, sagen wir15px
oder18px
. Beim Testen habe ich jedoch kein einziges Beispiel gesehen, bei dem ein Browser, der Standardeinstellungen in einem System mit Standardeinstellungen verwendet, einen anderen Wert als hatte16px
. Wenn Sie ein solches Beispiel finden, teilen Sie es mir bitte mit.quelle
matrix()
mit Javascript verwende, bei dem Matrix-Übersetzungswerte verwendet werdenpx
(korrigieren Sie mich, wenn ich falsch liege), und ich bin so verwirrt damit .getComputedStyle()
aber das Ergebnis ist immer auf Pixel, also muss ich das Ergebnis durch denrem
Wert teilen (wie 16). CMIIWrem
Wert generieren , wenn Sie bereits den richtigenpx
Wert haben, müssen Sie nicht zurem
Einheiten für Dinge wechseln , die bereits für den angegebenen Kontext berechnet wurden.Dieser Artikel beschreibt ziemlich gut die Vor- und Nachteile von
px
,em
, undrem
.Der Autor kommt schließlich zu dem Schluss, dass die beste Methode wahrscheinlich darin besteht, beide
px
und zu verwendenrem
, indem erpx
zuerst für ältere Browser deklariert undrem
für neuere Browser neu deklariert :quelle
px
. Bei der Einheit für Elemente istpx
es besser, sich daran zu halten, da Sie normalerweise die Größe von Elementen präzise festlegen möchten.px
die Größe ändern mussten, die Aktivierung der Größenänderung. Wenn wir jetzt verwendenrem
, müssen wir immer nochpx
Fallback bereitstellen (in älteren Browsern). Im Wesentlichen bedeutet dies, dass diepx
Größenänderung des Supports besser ist alsrem
. Neuere Browser unterstützen diepx
Größenänderung und für ältere Browser jede Art und Weise, auf die wir zurückgreifen werdenpx
. Angesichts dieser Schlussfolgerung bin ich sehr daran interessiert zu wissen, warum ich sie verwenderem
. Wenn ich das Licht am Ende des Tunnels sehen darf.Als Reflexantwort würde ich die Verwendung von rem empfehlen, da Sie bei Bedarf die "Zoomstufe" des gesamten Dokuments auf einmal ändern können. In einigen Fällen, wenn Sie möchten, dass die Größe relativ zum übergeordneten Element ist, verwenden Sie em.
Die Rem-Unterstützung ist jedoch unvollständig, IE8 benötigt eine Polyfüllung und Webkit weist einen Fehler auf. Darüber hinaus kann die Subpixelberechnung dazu führen, dass Dinge wie Zeilen mit einem Pixel manchmal verschwinden. Die Abhilfe besteht darin, Pixel für solch sehr kleine Elemente zu codieren. Das führt zu noch mehr Komplexität.
Fragen Sie sich also insgesamt, ob es sich lohnt - wie wichtig und wahrscheinlich ist es, dass Sie die "Zoomstufe" des gesamten Dokuments in CSS ändern?
In einigen Fällen ist es ja, in einigen Fällen ist es nein.
Es hängt also von Ihren Anforderungen ab und Sie müssen die Vor- und Nachteile abwägen, da die Verwendung von rem und em einige zusätzliche Überlegungen im Vergleich zum "normalen" pixelbasierten Workflow mit sich bringt.
Denken Sie daran, dass es einfach ist, Ihr CSS von px auf rem umzustellen (oder besser zu konvertieren) (JavaScript ist eine andere Geschichte), da die folgenden zwei CSS-Codeblöcke das gleiche Ergebnis liefern würden:
quelle
Ja, REM und PX sind relativ, aber andere Antworten haben vorgeschlagen, REM über PX zu wählen. Ich möchte dies auch anhand eines Beispiels für Barrierefreiheit sichern.
Wenn der Benutzer im Browser eine andere Schriftgröße festlegt, skaliert REM Elemente wie Schriftarten, Bilder usw. auf der Webseite automatisch nach oben und unten, was bei PX nicht der Fall ist.
Im folgenden GIF wird der Text auf der linken Seite mit der REM-Einheit für die Schriftgröße festgelegt, während die Schrift auf der rechten Seite mit der PX-Einheit festgelegt wird.
Die Standardschriftgröße einer Webseite ist 16px, was 1 rem entspricht (nur für die Standard-HTML-Seite, dh
html{font-size:100%}
), also entspricht 1,25rem 20px.PS: Wer benutzt noch REM? CSS Frameworks! wie Bootstrap 4, Bulma CSS usw., also besser damit auskommen.
quelle
Die Antwort von josh3736 ist gut, aber um 3 Jahre später einen Kontrapunkt zu liefern:
Ich empfehle die Verwendung von
rem
Einheiten für Schriftarten, schon allein deshalb, weil es für Sie als Entwickler einfacher ist , die Größe zu ändern. Es ist richtig, dass Benutzer die Standardschriftgröße in ihren Browsern sehr selten ändern und dass der moderne Browser-Zoompx
Einheiten vergrößert . Aber was ist, wenn Ihr Chef zu Ihnen kommt und sagt: "Vergrößern Sie nicht die Bilder oder Symbole, sondern vergrößern Sie alle Schriftarten." Es ist viel einfacher, einfach die Root-Schriftgröße zu ändern und alle anderen Schriftarten relativ dazu skalieren zu lassen, als diepx
Größe in Dutzenden oder Hunderten von CSS-Regeln zu ändern .Ich denke, es ist immer noch sinnvoll,
px
Einheiten für einige Bilder oder für bestimmte Layoutelemente zu verwenden, die unabhängig vom Maßstab des Designs immer dieselbe Größe haben sollten.Caniuse.com hat vielleicht gesagt, dass nur 75% der Browser, als josh3736 seine Antwort im Jahr 2012 veröffentlichte, ab dem 27. März 93,78% Unterstützung beanspruchen . Nur IE8 unterstützt es nicht unter den Browsern, die sie verfolgen.
quelle
Only IE8 doesn't support it among the browsers they track.
Huh? Auf der verlinkten Seite heißt es: „IE9 und IE10 unterstützen keine Rem-Einheiten, wenn sie in der Shorthand-Eigenschaft für Schriftarten oder für Pseudoelemente verwendet werden. IE9, 10 & 11 unterstützen keine Rem-Einheiten, wenn sie in der Eigenschaft "Zeilenhöhe" verwendet werden, wenn sie für: vor und: nach Pseudoelementen verwendet werden. Rem-Größen verschwinden, wenn die Seite in Chrome verkleinert wird. Funktioniert nicht mit Samsung Note II Android 4.3 Browser und Samsung Galaxy Tab 2 unter Android 4.2. Bei Chrome 31-34 und Chrome-basierten Android-Geräten (wie 4.4) tritt ein Fehler in der Schriftgröße auf, wenn das Root-Element eine prozentuale Größe hat. “as of March 27 they claim 93.78% support.
Zum Zeitpunkt der diesen Kommentar zu schreiben, caniuse zeigt lediglich 91,79% der vollen Browser - Unterstützung. Wenn Sie sich Ihren Prozentsatz ansehen, bin ich mir ziemlich sicher, dass Sie auch die Unterstützung für fehlerhafte Browser einbezogen haben (derzeit 2,8%, was als optimistische Gesamtabdeckung von 94,6% interpretiert werden könnte - aber Tatsache ist, dass diese 2,8% fehlerhaft, unvollständig oder sogar vollständig sind Fehlerhafte Unterstützung… wie in meinem vorherigen Kommentar erwähnt: Jeder Fehler ist das Ergebnis unterschiedlicher Browserversionen und Betriebssystemkombinationen.) Möglicherweise möchten Sie Ihre Antwort entsprechend korrigieren…Ich habe herausgefunden, dass der beste Weg, die Schriftgrößen einer Website zu programmieren, darin besteht, eine Basisschriftgröße für die zu definieren
body
und dann ems (oder rems) für jede andere zu verwenden, diefont-size
ich danach deklariere. Das ist wohl eine persönliche Präferenz, aber sie hat mir gute Dienste geleistet und es auch sehr einfach gemacht, ein reaktionsschnelleres Design zu integrieren .Was die Verwendung von Rem-Einheiten angeht, finde ich es gut, ein Gleichgewicht zwischen progressivem Code zu finden, aber auch Unterstützung für ältere Browser anzubieten. Schauen Sie sich diesen Link über die Browserunterstützung für Rem-Einheiten an , der Ihnen bei Ihrer Entscheidung helfen sollte.
quelle
body
Schriftgröße ändern und alles ändert sich damit.pt
ist insofern ähnlichrem
, als es relativ fest ist, aber fast immer DPI-unabhängig, selbst wenn nicht konforme Browser behandelnpx
geräteabhängig .rem
variiert mit der Schriftgröße des Stammelements, aber Sie können etwas wie Sass / Compass verwenden, um dies automatisch zu tunpt
.Wenn du das hättest:
dann
1rem
wäre es immer12pt
.rem
undem
sind nur so geräteunabhängig wie die Elemente, auf die sie sich verlassen; Einige Browser verhalten sich nicht gemäß den Spezifikationen und werdenpx
wörtlich behandelt . Selbst in den alten Tagen des Web wurde 1 Punkt durchweg als 1/72 Zoll angesehen - das heißt, es gibt 72 Punkte in einem Zoll.Wenn Sie einen alten, nicht kompatiblen Browser haben und Folgendes haben:
dann
1rem
wird geräteabhängig sein. Für Elemente, diehtml
standardmäßig erben würden ,1em
wäre dies auch geräteabhängig.12pt
wäre das hoffentlich garantierte geräteunabhängige Äquivalent:16px / 96px * 72pt = 12pt
, wo96px = 72pt = 1in
.Es kann ziemlich kompliziert werden, zu rechnen, wenn Sie sich an bestimmte Einheiten halten möchten. Zum Beispiel
.75em of html = .75rem = 9pt
und.66em of .75em of html = .5rem = 6pt
. Eine gute Faustregel ist:pt
für absolute Größen. Wenn dies wirklich dynamisch in Bezug auf das Stammelement sein muss, fordern Sie zu viel CSS. Sie benötigen eine Sprache, die zu CSS kompiliert werden kann, z. B. Sass / SCSS.em
für relative Größen. Es ist ziemlich praktisch zu sagen: "Ich möchte, dass der Rand links ungefähr die maximale Breite eines Buchstabens hat" oder "Machen Sie den Text dieses Elements nur ein bisschen größer als seine Umgebung."<h1>
ist ein gutes Element für die Verwendung einer Schriftgröße in ems, da sie an verschiedenen Stellen angezeigt werden kann, aber immer größer sein sollte als Text in der Nähe. Auf diese Weise müssen Sie nicht für jede Klasse, auf die angewendet wird, eine separate Schriftgröße festlegenh1
: Die Schriftgröße wird automatisch angepasst.px
für sehr kleine Größen. Bei sehr kleinen Größenpt
kann es in einigen Browsern mit 96 DPI unscharf werden, dapt
undpx
nicht ganz ausgerichtet. Wenn Sie nur einen dünnen Ein-Pixel-Rand erstellen möchten, sagen Sie dies. Wenn Sie ein hochauflösendes Display haben, wird Ihnen dies beim Testen nicht klar sein. Testen Sie daher irgendwann auf einem generischen 96-DPI-Display.quelle
Die Hälfte (aber nur die Hälfte) der Antwort (die andere Hälfte ist bittere Verachtung der Realität der Bürokratie):
Verwenden Sie vh
Alles ist immer auf das Browserfenster abgestimmt.
Lassen Sie immer nach unten scrollen, niemals zur Seite.
Stellen Sie die Körperbreite auf statische 50 VH ein, und nichts schwebt oder bricht aus dem übergeordneten Div aus. Und stylen Sie nur mit Tischen, damit alles wie erwartet fest an seinem Platz bleibt. Fügen Sie eine Javascript-Funktion hinzu, um alle Strg +/- Aktivitäten des Benutzers rückgängig zu machen.
Jeder wird dich hassen, außer den Leuten, die dir sagen, dass die Dinge zu ihrem Modell passen sollen, und sie werden begeistert sein. Und jeder weiß, dass nur seine Meinung zählt.
quelle
Ja. Oder eher nein.
Äh, ich meine, es spielt keine Rolle. Verwenden Sie diejenige, die für Ihr bestimmtes Projekt sinnvoll ist. PX und EM oder beide sind gleichermaßen gültig, verhalten sich jedoch je nach CSS-Architektur Ihrer Gesamtseite etwas anders.
AKTUALISIEREN:
Zur Verdeutlichung sage ich, dass es normalerweise wahrscheinlich egal ist, welche Sie verwenden. Manchmal möchten Sie möglicherweise speziell eine über die andere auswählen. EMs sind nett, wenn Sie von vorne anfangen können und eine Basisschriftgröße verwenden und alles relativ dazu machen möchten.
PXs werden häufig benötigt, wenn Sie ein Redesign auf eine vorhandene Codebasis nachrüsten und die Spezifität von px benötigen, um fehlerhafte Verschachtelungsprobleme zu vermeiden.
quelle
Ems sind der Weg nach vorne, nicht nur für Schriftarten, sondern Sie können sie auch mit Kästchen, Linienstärke und anderen Dingen verwenden. Warum?
Einfach gesagt, Ems sind die einzigen, die zum Zoomen im Einklang mit den Tasten Alt + und Alt im Browser skaliert werden.
Andere Messungen skalieren, aber nicht so sauber wie ein em.
Nebenbei bemerkt, wenn Sie die beste Skalierung wünschen, konvertieren Sie Ihre Grafiken nach Möglichkeit auch in vektorbasiertes SVG, da diese auch mit dem Zoomverhältnis des Browsers sauber skaliert werden.
quelle
EMs sind das EINZIGE, was für Medienabfragen skaliert werden kann, die mit +/- Skalierung umgehen, was Menschen ständig tun, nicht nur Blinde. Hier ist noch eine sehr gut geschrieben professionelle Demonstration, warum dies wichtig ist.
Dies ist übrigens der Grund, warum Zurb Foundation ems verwendet , während der minderwertige Bootstrap 3 immer noch Pixel verwendet.
quelle