Cascading Style Sheets - Tutorial für WebDesigner und WebDesignerinnen


Letzte Änderung am 21.01.2005
Cascading Style Sheets - ein Tutorial
Vorbemerkung: Die Kapiteleinteilung hält sich an das Buch von Eric A. Meyer: Cascading Style Sheets, The Definitive Guide, O'REILLY, 2004.
Es soll eine sinnvolle Adaptation der W3C-Regeln zu CSS1, 2 und 2.1.aus der Perspektive von Lernenden sein. Die eingefügten Demos lassen sich-fast ohne Ausnahme-im Quelltext editieren und ansehen. Der Code ist so einfach wie möglich gehalten und das Tutorial kann auch offline benutzt werden. CSS-Bereiche, die in den gängigen Browsern bisher nicht implementiert wurden, werden nicht dokumentiert.
Andreas Lutz MatteDesign, Bern

Kapitelübersicht

Kapitel 5: Fonts

Font Familien
Generelle Vorbemerkung:
Viele Eigenschaften von Schriften hängen erstens von den installierten Fonts (ob sie vorhanden sind), wie zweitens vom Font-Design selbst ab. Fehlende Eigenschaften im Fontdesign können von CSS nicht wettgemacht werden.
CSS bietet Annäherungen, soweit sie möglich sind.
Generische Schriftarten
Serifenschriften (serif):
Proportional mit Serifen, beispielsweise: Times, Georgia, New Century Schoolbook
Serifenlose Schriften (sans-serif):
Proportional, serifenlos, beispielsweise: Helvetica, Geneva, Verdana, Arial, Univers
Monospace Schriften (monospace):
Nicht-proportional, emulieren Typewriterschriften von alten Dot-Matrix Printern, beispielsweise: Courier, Courier New, Andala Mono
Kursive Schriften (cursive):
Emulieren Handschriften, beispielsweise: Zapf Chancery, Author, ComicSans
Fantasie-Schriften (fantasy):
Beispielsweise Western, Woodblock, Klingon
Verwendung generischer Schriftarten:
Es ist möglich, allein mit generischen Schriftarten ein Font-Layout zu definieren. Allerdings hat man die Macht über den eigentlichen Schrifttyp nicht.
Beispiel: h1{font-family:sans-serif}
Demo 1

Spezifische Font-Familien

font-family
Values: [[<family-name> | <generic-family>],]*[<family-name> | <generic-family>] | inherit
Voreinstellung: Browser-Einstellung
Anwendbar auf: Alle Elemente
Vererbt: Ja
Computereingabe: wie angegeben

Beispiel: p{font-family:Georgia;serif}
Es ist gute Praxis, immer nach dem Font-Typ eine generische Schriftart zu definieren, falls diese Schrift im Browser nicht zur Verfügung steht.
Besteht die Schriftart aus mehrern Wörtern mit Leerschlägen, so werden sie in einfache oder doppelte Klammern gesetzt.

Demo 2

Schriftgewicht

font-weight
Values: normal | bold | bolder |lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
Voreinstellung:Browser-Einstellung
Anwendbar auf: alle Elemente
Vererbung: Ja
Computereingabe: numerische (ev. plus relative Angabe)
Demo 3

Bei nicht vorhandenen Eigenschaften wird auf oder abgerundet: 700 entspricht "bold" und 400 entspricht "normal"
Hypothetische Schrifttabelle für eine spezifische Font-family:

Schriftart Zugeordnete Schlüsselwörter Zugeordnete Nummern
Zurich light 100, 200, 300
Zurich Medium 500
Zurich Regular normal 400
Zurich bold bold 600, 700
Zurich Black 800
Zurich UltraBlack 900

Dies hängt vom Font-Design selbst ab. Schriftarten, die nur normal und fett haben, verteilen die entsprechenden Nummern anders, genereller.
Relative Angaben (bolder, lighter):
Dies ist abhängig vom gesetzten Wert des übergeordneten Elementes und vom Schriftdesign.

Schriftgrösse

font-size
Values: xx-small | x-small | small | medium | large | x-large | xx-large | smaller | larger | <length> | <percentage> | inherit
Voreinstellung: medium
Anwendbar auf: alle Elemente
Vererbung: Ja Prozent: Berechnet aus der Parent-Angabe, je nach dem kumulativ
Computereingabe: Absolute Grösse oder S. Values
Demo 4

Font-Size wird von den Designern als em-quadrat definiert (em-box), in der alle vorkommenden Buchstaben Platz haben.
Absolute Grössenangaben
Der Medium-Typ hat eine Grösse von 16px. Daraus ergeben sich Skalierungsfaktoren in Pixel von einem Typ zum nächst höheren/tiefern von ca.1.5-1.2)

Schlüsselwort Skalierung: 1.5 Skalierung: 1.2
xx-small 5px 9px
x-small 7px 11px
small 11px 13px
medium 16px 16px
large 24px 19px
x-large 36px 23px
xx-large 54px 28px

Allerdings ist dieser Faktor immer auch vom Browsertyp abhängig.
Relative Grössenangaben
smaller, larger: gleiten die Skala der absoluten Grössen ab und auf, und bestimmen sich nach der Grössenangabe (computed Style) im übergeordneten Element.
Prozentangaben und Grössen
Sie sind ebenfalls relativ zum Elternelement, aber feiner zu kontrollieren als die Angaben larger und smaller. Wie die Prozentangaben verhält sich auch die Grössenangabe em.
Schriftgrösse und Vererbung
Schriftgrössen werden vererbt und letzlich immer in Pixelgrössen umgerechnet (und gerundet). Prozentangaben verhalten sich daher kumulativ! D.h. 80% von 15px sind 9px, 90% davon ergibt schlussendlich 8px. Dies kann theoretisch bei vielfach verschachtelten Elementen (Tabellen, Listen) zu erheblichen Leseproblemen führen.
Demo 3 Massangaben
Längenmasse <length>
Die folgenden Angaben sind alle gleich:
{font-size:36pt}
{font-size:3pc}
{font-size:0.5in}
{font-size:1.27cm}
{font-size:12.7mm}
Diese Gleichwertigkeit wird durch die verfügbaren ppi des Bildschirms definiert (Bildschirmauflösung)
Es setzt sich immer mehr durch, dass für die Font-Grösse relative Angaben (px,em) gesetzt werden. (Mac-Problem, bei kleinerer Bildschirmauflösung). Dies verspricht grössere Konsistenz beim Design.

Schriftstile und -varianten

font-style
Values: italic | oblique | normal | inherit
Ausgangswert: normal
Anwendbar auf: alle Elemente
Vererbung: Yes
Computereingabe: S.Values
Demo 5


Normalerweise ist italic eine spezielles Schrift-Design, während oblique nur eine "geneigte" Version des normalen Schriftstils ist.

font-variant
Values: small-caps | normal | inherit
Anfangswert: normal
Anwendbar auf: alle Elemente
Vererbung: Yes
Computereingabe: Wie Values
Demo 6


Stellt die Schrift in normalen und kleinen Grosschriftbuchstaben dar.

Stretching und Ajusting
Ist aus der Version CSS 2.1 weil niergends implementiert elimiert worden.

Font-Eigenschaft (font)
Zusammenfassende font: Eigenschaften.
Reihenfolge der Angaben: Muster: font: font-variant font-weight font-size /line-hight font-family
Beispiel: 1:h2{font:normal italic 200%/1.2 Verdana,Helvetica, Arial, sans-serif}
Font-size kommt immer vor dem optionalen line-height (mit "/").
Die Font-Family kommt immer am Schluss und muss angegeben werden. Ansonsten können Elemente weggelassen werden. Es wird der Normalwert ausgewählt oder der Wert auf normal gesetzt.
Die Shorthand-Property vererbt weggelassene Eigenschaften in einer überschreibenden oder ergänzenden Definition für dasselbe Element nicht.

Demo 7

System Fonts (Betriebssystem, "user-style"-Angaben)
caption: Button-Anschriften
icon: font bei gelabelten Icons
menu: Menüfonts
message-box: Fonts in Dialogboxen
small-caption: Font bei schmalen Controls
status-bar: font in der Statuszeile
Beispiel: button{font: caption; font-size:1em;} ->S. Kapitel 13

@font-face: Wurde wegen nicht Implementierung in den Browsern in CSS 2.1. verbannt. Es fehlt hier noch ein Stück über Font-Matching und font downloads...

Weiter zu Kapitel 6: Text-Eigenschaften