Einführung in Cascading Style Sheets : Grundlagen
- Genereller Syntax
- Einbinden in HTML
- Gruppieren der Styles
- Vererbung
- Attribut 'Class' als Selektor
- Attribut 'Id' als Selektor
- Kontextabhängige Selektoren
- Kommentare
Genereller Syntax
Eigene Style Sheets zu erstellen ist recht simpel. Man braucht
eigentlich nur ein paar HTML Kenntnisse, um loszulegen. Ein
Beispiel: Um die Textfarbe einer Überschrift 1. Ordnung
H1 festzulegen, benutzt man diese Regel:
H1 { color: red }
Das Beispiel oben ist eine einfache CSS Regel. So eine Regel
besteht aus zwei Hauptteilen, dem Selektor H1 und der
Deklaration color: red. Die Deklaration besteht
ebenfalls aus zwei Teilen, der Eigenschaft color und
dem Wert red. Daraus ergibt sich dann folgender
Syntax:
SELEKTOR { Eigenschaft: Wert }
Der Selektor H1 ist die Verbindung zwischen HTML
und dem Style Sheet, und alle gültigen HTML Elemente sind
mögliche Selektoren.
Die Eigenschaft 'color' ist nur eine von vielen Eigenschaften, mit denen man das Aussehen des HTML Dokumentes beeinflussen kann. Eine Liste der möglichen Eigenschaften mit ihren möglichen Werten findet sich später in diesem Tutorial.
Einbinden in HTML
Um Style Sheets auch nutzen zu können, muss man sie im Html Dokument einbinden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 //EN"> <HTML> <HEAD> <TITLE>Dokument Titel</TITLE> <LINK REL="STYLESHEET" TYPE="text/css" HREF="http://imported.com/blues.css" TITLE="Blues"> <STYLE TYPE="text/css"> @import url(http://imported.com/basics.css); H1 { color: blue } </STYLE> </HEAD> <BODY> <H1>Die Überschrift ist blau</H1> <P STYLE="color: red">Und der Paragraph ist Rot. </BODY> </HTML>
Dieses Beispiel gibt 4 Möglichkeiten, wie man CSS mit HTML
verbinden kann. Das Link Element um auf ein externes
Style Sheet zu verweisen, ein Style Element innerhalb
des Head Elementes, ein importiertes Style Sheet, mit
der @import Notation und ein Style
Attribut im Body.
Die Style Sheets die mit Link referenziert wurden,
sind optionale, vom Benutzer auswählbare Style Sheets,
während die mit @import importierten Style Sheets
auf jeden Fall in das Dokument implementiert werden.
Das Style Element dient zur lokalen Deklaration von CSS Regeln. Hier sollte man alles Seitenspezifische deklarieren, um speziellen Elementen ein besonderes Aussehen zu verleihen.
Da ältere Browser das Style Element nicht
kennen, kann man den Inhalt mit Kommentaren verstecken, damit diese
Browser den Inhalt nicht als Text anzeigen.
<STYLE TYPE="text/css"><!--
H1 { color: green }
--></STYLE>
Mit dem Style Attrbut kann man dann jedes Einzelne HTML Element (außer BASE, BASEFONT, HEAD, HTML, META, PARAM, SCRIPT, STYLE und TITLE) ein bestimmtes Aussehen zuweisen. Diese Eigenschaften gelten dann nur für dieses eine auftauchen des Elements und andere, gleiche Elemente ohne Style Attribut werden normal angezeigt.
Gruppieren der Styles
Um Styles Sheets möglichst klein zu halten, kann man Selektoren in Gruppen zusammenfasen, indem man sie mit mit Kommata vor der Deklaration trennt:
H1, H2, H3, DIV { font-family: Arial }
Ähnlich kann man auch mehrere Eigenschaften zusammenfassen:
H1 {
font-weight: bold;
font-size: 12px;
line-height: 14px;
font-family: helvetica;
}
Zusätzlich haben einige Eigenschaften ihren eigenen Gruppierungssyntax:
H1 { font: bold 12px/14px helvetica }
Das Beispiel ist mit dem oberen identisch.
Vererbung
Im ersten Beispiel wurde die Farbe des Elements H1
auf die Farbe Rot gesetzt. Mal angenommen in dem Element
H1 taucht nun ein mit EM hervorgehobenes Wort
auf z.B.
<H1>Dieses Wort <EM>ist</EM> wichtig</H1>
Wenn EM keine Farbe zugewiesen wurde, so erbt
dieses Element von ihrem übergeordnetem Element, also die
Farbe Rot. Viele andere Eigenschaften wie font-family
oder font-size werden vergleichbar vererbt.
Um so z.B. für das gesamte Dokument eine einheitliche Schrift zu bestimmen kann man schreiben:
BODY {
font-family: Arial;
color: blue;
background: url(hintergrund.gif);
}
Es gibt auch Eigenschaften die nicht vererbt werden, so z.B. die
background Eigenschaft, wobei es eigentlich egal ist,
ob diese Eigenschaft vererbt wird, oder nicht, da der Hintergrund
des übergeordneten Elementes sowieso durchscheint.
Oftmals ist es auch sinnvoll eine Eigenschaft als Prozentangabe anzugeben, die sich dann auf eine andere Eigenschaft bezieht, z.B.:
P { font-size: 10pt }
P { line-height: 120% }
/* relativ zur 'font-size', also 12pt */
Wenn nun Elemente diesem P untergeordnet werden,
dann übernehmen diese den absoluten line-height
Wert (also 12pt) und nicht den relativen von 120%.
Attribut 'Class' als Selektor
Um den Einsatz von Styles möglichst flexibel zu gestalten,
gibt es das Html Attribut Class. Für alle
Elemente innerhalb von Body kann das Attribut
definiert werden, und die Klasse (Class) kann im Style Sheet
deklariert werden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 //EN">
<HTML>
<HEAD>
<TITLE>Titel</TITLE>
<STYLE TYPE="text/css">
H1.green { color: green }
</STYLE>
</HEAD>
<BODY>
<H1 CLASS="green">Eine grüne Überschrift</H1>
<H1>Eine Normale Überschrift</H1>
</BODY>
</HTML>
Für Class-Selektoren gelten die gleichen Vererbungsregeln,
d.h. ein mit EM hervorgehobener Teil innerhalb von
<H1 Class="green"> wird ebenfalls grün.
Man kann die Klassen auch für alle Elemente deklarieren:
.green { color: green }
/* Für alle Elemente mit CLASS=green */
Attribut 'Id' als Selektor
Das HTML Attribut 'Id' kann ebenfalls als Selektor verwand werden. Der Unterschied zu 'Class' besteht darin, das ein 'Id' ein Unikat in dem Dokument sein muss, also jeder Wert für 'Id' darf nur einmal auftauchen. Ihnen bekommt daher eine besondere Bedeutung zu. Deklariert werden 'Id' Selektoren mit einem vorangestelltem '#'
#Wide { letter-spacing: 0.3em }
H1#Wide { letter-spacing: 0.5em }
Im ersten Beispiel bekommt z.B. ein <P ID="Wide">Wide
Text</P> ein letter-spacing von 0.3em. Im
zweiten Beispiel gilt es nur für ein H1 Element
mit dem Atrribut 'Id=Wide', daß dann ein
letter-spacing von 0.5em bekommt.
Kontextabhängige Selektoren
Die Vererbung von Eigenschaften erspart einem viel Tipparbeit.
Man definiert Standardeigenschaften und behandelt Ausnahmen
separat. Wenn man z.B. dem Element EM innerhalb von
H1 ein besonderes Aussehen verliehen will, kann man
schreiben:
H1 { color: blue }
EM { color: red }
Jetzt wird das Element EM innerhalb von
H1 wie gewollt rot dargestellt, aber überall sonst im
Dokument auch. Um das zu verhindern kann man die Styles
abhängig von ihrem Auftauchen deklarieren.
H1 EM { color: red }
Wenn jetzt der Hierarchie entsprechend ein EM
innerhalb von H1 gefunden wird, so wird das rot
dargestellt, sonst nicht.
Das ganze kann man dann auch noch weiter verschachteln, z.B.:
DIV H1 EM { color: #ff00ff }
Kontextabhängige Selektoren können von Elementen,
Class Attributen, Id Attributen oder
Kombinationen daraus abhängig gemacht werden, z.B.:
DIV P { font: small sans-serif }
.green H1 { color: blue }
#x78y CODE { background: blue }
DIV.sidenote H1 { font-size: large }
Bedeutet soviel wie: P in DIV bekommt kleine sans-serif Schrift; H1 innerhalb von Class=green wird blau gefärbt; CODE innerhalb von ID="#x78y" bekommt blauen Hintergrund; H1 innerhalb von DIV mit Class=sidenote wird groß dargestellt.
Ebenso wie auch normale Selektoren, können kontextabhängige Selektoren gruppiert werden:
H1 B, H2 B, H1 EM, H2 EM { color: red }
Was dasselbe ist, wie:
H1 B { color: red }
H2 B { color: red }
H1 EM { color: red }
H2 EM { color: red }
Kommentare
Kommentare in CSS sind denen in Programmiersprachen wie C sehr ähnlich:
A { color: green } /* Linkfarbe ist grün */
CSS Kommenatare können nicht ineinander verschachtelt werden, und Kommentare wie man sie von JavaScript her kennt ala '// Kommentar' sind auch nicht zulässig.

