die digitale Küche des stillen Bastlers

CSS verbessern #2: Em, Pixel, Points, Prozent und Keywords

In diesem zweiten Artikel zur Verbesserung des eigenen CSS Schreibstils möchte ich mal etwas näher auf die Masse Em, Pixel, Points, Prozent und die selten gebräuchlichen Keywords zur Grössenbemessung von Schriftarten eingehen und ein paar Webdesignern auf die Hände klatschen.

Cross-Browser Kompatibilität, ein wichtiges Thema

Pixel (px)

Pixel sind wohl die meist gebrauchten Masse. Und genau deswegen steige ich mal hier ein. Pixel eignen sich hervorragend für statische Layoutelemente, wo man sie heute heute überall vermehrt hat. Da sich viele Webseiten darauf festlegen, zentriert angezeigt zu werden, kommt auch meist eine feste Pixelbreite zum Einsatz. Man umschliesst seine ganze Seite im Normalfall mit einem Container, der sich und seinen Inhalt dann flexibel anpassen lässt. Aus Tests weiss man, dass sich die Benutzer meist nur auf eine kleine Fläche des Bildschirms konzentrieren können. So sind voll dynamische, auf die ganze Browser Breite justierte Seiten nicht wirklich praktisch, da der Bereich, der mit den Augen eingefangen werden kann, so oder so zu gross ist.

Nun, Pixel sind also eine gute Sache, da sind wir uns einig. Jetzt verwenden aber viele Webdesigner und CSS Schreiberlinge Pixel für Schriftgrössen.

Probleme:

  • Schriften lassen sich von alten Browsern nicht verkleinern und vergrössern, was den Benutzer einschränkt.
  • Schriftgrössen justieren sich exakt in diese Pixelmasse was bewirkt, dass sie kleiner aussehen, als sie eigentlich sind im Vergleich zu anderen Schriftarten.
  • Je nach Monitor und Einstellung der Kantenglättung sehen Schriftarten ganz anders aus.
  • Pixelgrössen sind statisch. Sie lassen sich nicht durch Elternelemente beeinflussen im Gegensatz zu EM, Prozent und Keywords.

Dadurch, dass viele Webdesigner diese Punkte ignorieren, schaffen sie eine statische Umgebung, die spätere Anpassungen völlig unbequem lassen und dabei noch noch ältere Browser ausschliessen. Gut, da in letzter Zeit sowieso immer mehr Kontroverse und Boykott Aktionen gegen den Internet Explorer 6 statt finden, ist der von mir zweite genannte Punkt sicher nicht mehr eine grosse Diskussion wert.

EM

EM ist eher was Neues. Ja und genau deswegen hat’s der Bauer wohl auch noch nicht gefressen. EM heisst übrigens auch nicht Europa Meisterschaft. Ehrlich gesagt habe ich noch nicht rausgefunden, was EM in der Namensgebung genau bedeutet, aber ich würde mal so etwas wie Elastic Mass vermuten.

Wie auch immer, was man über EM wissen muss ist kurz gesagt: EM ist eine relative Masseinheit. Das heisst, sie passt sich seinem Elternelement an und ist so flexibel und dynamisch. EM eignen sich praktisch nur für Schriftarten. Dabei gilt die Regel: Beim normalen Browserstandard ist 1em = 16px. Setze ich als keinen Wert in meinem Body, werden Schriftarten in 16 Pixel angezeigt. So, nun scheuen sich viele vor dem Arbeiten mit EMs weil es wohl einfach schwer vorstellbar ist, wie z.B. 1.2em oder 2em aussieht, wenn ja 1em = 16px ist. Meine Güte, man könnte es ja ausrechnen, aber wer will das schon? Und hier kommt der Trick.

Setzen wir die Schriftgrösse unseres Body auf 62.5%, ist 1em = 10px. Warum? Ganz einfach. Da EM relativ ist und Body das oberste Element ist, passt sich die Grösse unserer EM Masseinheiten an.

1em = 16px = 100%
1em = 10px = 62.5%

Die Arbeit mit EM ist nun auch für jeden Pixelmeister kein Problem mehr. Denn 12px wären nun Beispielsweise 1.2em, oder 20px wären 2em.

body {
font-size: 62.5%
}

Vorteile:

  • Kann verkleinert und vergrössert werden mit IE6
  • Dynamisch/Elastisch
  • Passt sich dem Elternelement an

Points (pt)

Points laufen auf das gleiche problem wie Pixel hinaus: Sie sind nicht beeinflussbar durch ältere Browser. Die pt Masseinheit sollte vor Allem für Druckerfreundliche Seiten oder speziell vorgefertigte Druckseiten auf Webseiten benutzt werden und für mehr nicht.

72pts = 1 Zoll = 2.54 cm

Warum wir Points nicht für Webseiten nutzen liegt klar auf der Hand. Die Unterschiede zwischen verschiedenen Browsern sind drastisch. Je nach Browser kann die Schriftart sogar Doppelt so gross erscheinen.

Prozent (%)

Wie die Prozent Masseinheit funktioniert muss man wohl nicht lange erklären. Hat ein Elternelemnt die Schriftgrösse von 20px, hat das Unterlement bei einer eingestellten Schriftgrösse von 50% noch eine Grösse von 10px.

Im produktiven Betrieb kommt die Prozent Schriftgrösse vor Allem dort zum Einsatz, wo sie sich per Eingabe des Benutzer flexibel vergrössern und verkleinern lässt. Sie ist ebenfalls abhängig vom Elternelement wie EM. Doch ist es sehr schwer mit % über eine ganze Webseite hinweg zu arbeiten. Es ist schlecht vorstellbar, wie gross diese % angaben sind, da sowohl Angaben hinter dem Komma die Schriftgrösse noch Feintunig verändert.

Eine beliebte Technik ist, die Body Schriftgrösse auf 62.5% zu setzen, um in den danach folgenden Elementen mit EM zu arbeiten (siehe Beschriebung zu EM).

Keywords

Keywords trifft man ehrlich gesagt nicht mehr so oft an. Mögliche Angaben sind xx-small, x-small, small, medium, large, x-large und xx-large. Weiter gibt es noch smaller und larger, welche mit den Font-Weight Eigenschaften bolder und smaller verglichen werden können.

Der Vorteil dieser Methode ist, dass die Schriftgrössen auf jedem Browser in etwa gleich gross sind. nachteile sind aber ganz klar die definierte Anzahl an Stufen, die unsere Schriftarten haben. Da wir uns ja meistens auf eine Methode von Schriftgrössen Angaben beschränken, hätten wir hier das Problem, das wir nur sieben Schriftgrössen zur Auswahl hätten. Das mag nicht schlimm sein in Anbetracht der Tatsache, dass wir für eine Webseite meist sowieso nicht mehr verwenden müssen.

Die Qual der Wahl

Die beste Auswahl macht man eindeutig mit EM. Sie sind modern, flexibel, vom Elternelementabhängig und lassen sich mit dem oben gezeigten Trick auch leicht anwenden. Es gibt also kein Schlecht und kein Gut. Jede der Masseinheiten hat seinen Platz in der richtigen Verwendung.

Schlecht sind aber sicher Webseiten, die für die Schriftgrösse jedes Elements eine Pixelmasseinheit definiert haben. Denn sie haben das Prinzip der Usability nicht verstanden die darin liegt, schnell und einfach alles anpassen zu können.


Tags: , , , , , , , | In der Kategorie CSS, Webdesign
  • Wolfgang
    Sehr cooler Blog! Vielen Dank für die Infos. Auch design-mässig sehr schöne Webseite! Sobald ich mit meiner Seite mal Geld verdiene melde ich mich. ;-)
  • "wer macht sowas auch :>"

    *flüster* CSP ;)

    "ich meine nur auch komplett auf em verzichten zu können und eben px zu setzen ohne dadurch bei änderung mehr aufwand zu haben, im gegenteil"

    Das müsstest du mir beweisen ;)
  • ok ich prädiere ja nicht dafür, jedem element eine schriftgröße (in px) zuzuweisen. wer macht sowas auch :>
    ich meine nur auch komplett auf em verzichten zu können und eben px zu setzen ohne dadurch bei änderung mehr aufwand zu haben, im gegenteil.
  • Ich bin immer noch der Meinung das Webseiten die für JEDES Element eine eigene Schriftgrösse in Pixel definiert falsch sind. Das, was du ansprichst, kannst du genau so mit EM erreichen. Schliesslich kannst du in CSS ja nur dein entsprechendes Heading Objekt (bsp. H1) mit der entsprechenden Elternklasse vorne dran ansprechen oder auch dein Span Objekt der entsprechenden Klasse oder DIV. Du bist ja in der Hinsicht völlig frei und flexibel.

    Ich sage mit meinem Satz oben nicht, dass es grundsätzlich falsch sei, Pixel zu verwenden. Ich sage nur, dass es völlig falsch ist, für wirklich jedes Objekt eine feste Schrift zu setzen. Und die Meinung vertrette ich mit sicherem Stand in Hinsicht auf das Ziel, die Usability zu verbessern.

    Aber wie bei vielen Sachen auf dieser Welt wird man den Sinn auch erst entdecken, wenn man den Nutzen für sich selber entdeckt.

    Ich bin klar der Meinung, jeder der Webseiten für andere Menschen erstellt sollte sich mit der Masse auseinander setzen, wenn er dafür noch überdurchschnittlich viel Geld verlangt.

    Und dann Schrift-Elemente wirklich alle mit Pixelgrössen zu versehen, ist nicht sehr Zeitgemäss. ;)
  • eigentlich unterscheiden sich px und em ja nur noch in der sache der abhängigkeit vom elternelement, da die skalierung wie schon gesagt von fast allen browsern bei beiden funktioniert.

    also ist die frage, ob man diese abhängigkeit haben will. und da muss ich ganz klar sagen: nein, ich will sie normalerweise nicht!
    erstens habe ich noch nie viele schriften gleichzeitig in der größe anpassen wollen.
    zweitens verwende ich elternelemente manchmal dazu, zum beispiel überschriften zu layouten. ein div für den content, darin zb spans für den eigentlichen text. möchte ich nun die überschrift verändern, soll dabei der inhalt gleich bleiben!

    beides hat vor und nachteile und wenn du dich mit em besser bedient fühlst ist das ok so, aber es ist ganz sicher falsch, webseiten als schlecht zu bezeichnen, allein weil sie nur px benutzen. allgemein finde ich deinen text, wie schon einträge zuvor, zu schwarz weiß gedacht und zu undifferenziert.
  • Gut. Dann sind wir nun etwa gleicher Meinung ;)
    Es ist sowieso fraglich, wenn Webseiten unbenutzbar werden, nur weil die Schriftgrösse verändert wird. Grundsätzlich spielt es für dich als Betreiber, Webdesigner, Entwickler keine Rolle, ob es bei anderen dann anders aussieht. Schlussendlich muss sie immer noch "Benutzbar" sein (wobei das ja auch schon wieder relativ ist).

    Und Grundsätzlich sollte die Schrift so oder so nicht so klein sein, dass jeder zoomen muss. Ich benutz beispielsweise ganz normale 16 Pixel, weil ich mittel bis lange Texte schreibe. Und die müssen gut lesbar sein (serif ist zwar nicht die beste Wahl, ich weiss).

    Deswegen mag ich auch diese Clanseiten nicht, die alles auf 9px oder 10px quetschen, und das bei ganzen Newstexten. ;)
  • ALso mit der im Browser eingestellten Schriftgröße meine ich ja nicht das "am Mausrad drehen", sondern z.B. in FF: Extras -> Einstellungen -> Inhalt -> Schrift unf Farbe.

    Dort sind standard 16px eingestellt auf die die %-Angaben im Body zurückgreifen.
    Wenn ich diese Größe auf 24px stelle, dann wird auf allen ab nun besuchten Seiten jede relative Schrift Größer dargestellt. die Grafiken aber nicht.

    Dann gibt es ja noch die Möglichkeit des Zoomes, die alle Bilder und sonstigen Elemente mit vergrößert. Diese Funktion funktioniert ja auch mit px-angaben.

    Habe aber gerade nochmal über unsere beiden Meinungen/Methoden nachgedacht und bin jetzt zu dem Entschluss gekommen, dass die Wahrheit tatsächlich wieder in der Mitte liegt:

    Überall relative Schriftgrößen zu benutzen ist tatsächlich besser, aus dem Grund des "nur eine Zahl ändern", den du ja auch genannt hast. Doch auf die im Browser eingestellte Schriftgröße (meisst 16px) zurück zu greifen, halte ich weiterhin aus dem "GrafikText"-Grund für problematisch, zumindest bei vielen Layouts.

    Zu dem Browsern: Auch ie7, ff2 (1 glaub ich sogar auch) und ältere opera-versionen können per mausrad auch in px-gemessene Texte skalieren (und neuerdings ja eben auch die Bilder) Also ist der ie6 wenn ich mich nicht täusche wirklich der einzige Browser, der px-Probleme hat und dieser wird ja zunehmend aus Prinzip sowieso nicht mehr unterstützt.
  • Deine Theorie geht nicht auf. Die Schrift kann auch mit Pixel in neuen Browser vergrössert werden. Das Problem das du schilderst kann also auch in neuen Browsern auftreten, wenn jemand die Schriftgrösse ändert.

    Des Weiteren wird beim normalen Schriftgrössen Zoom nur die aktuelle Seite vergrössert und nicht alle Seiten, die du dann zukünftig öffnest. Das kann man aber bestimmt auch im Browser einstellen. Mit Pixel kannst du das Problem aber auch nicht verhindern.

    Mit Pixel kann jeder arbeiten wenn er will, darf seine Produkte dann aber nicht als flexibel und dynamisch verkaufen. Selbst bei CSP (das du ja bestens kennst) sind überall Pixel Masse für die Schriften. Ich habe mich wirklich fies genervt, als ich mal die komplette Schrift der Seite um ein Stück zurückdrehen wollte. Denn da ist mir aufgefallen, das für jedes Unterlement von Body noch eine Pixelschrift definiert ist. So, und nun bin ich gezwungen jedes Element manuell zu ändern. Wäre jede Schriftart jedes Unterelements mit einem flexiblen Mass wie EM oder % angegeben, hätte der Eingriff im Body gereicht, um die komplette Webseite meinem Bedürfnis anzupassen.

    btw. verallgemeinerst du da etwas zu sehr die "update" offenheit bei anderen Browsern. Denn die ist genau so gleich wie die der IE Benutzer. Viele Institutionen und Privatnutzer nutzen sogar noch Firefox 2, welcher sehr viele ähnliche Fehler hat wie der IE6, was wiederum ein anderes Thema ist.
  • Theoretisch klingt das auch super, weshalb ich EIGENTLICH auch mit em arbeite (n will), aber das Problem ist, dass Grafiken nunmal in px gemessen werden und in den meisten Designs (wenn es nicht so schlichte Sachen wie bei meiner oder deiner Homepage sind) soll die schrift sich nunmal auch relativ zu den Grafiken richtig verhalten.
    Der Designer hat festgelegt, dass die Schrift auf dem 20px hohen Button in der navi 12px groß sein soll, dann muss die Schrift auch 12px groß sein. wenn ich das in 1.2em (mit dem trick) angebe und ein user in seinem browser die standardschriftgröße auf 26px gestellt hat, dann ragt die Schrift über den button hinnaus. das finde ich nicht userfreundlicher, als wenn die schrift zu klein ist.

    Zu dem Zoom "in älteren Browsern": Der ie ist der einzige Browser der das nicht kann. Benutzer von anderen Browsern sind wohl sowieso so offen gegenüber updates, dass sie keine firefox 1.0 version o.Ä. benutzen.

    Also meine Meinung: schriftgrößen nicht in px anzugeben macht nur sinn, wenn auch alle andren elemente nicht in px angegeben sind.
blog comments powered by Disqus