Wie die einleitenden Beispiele gezeigt haben, ermöglicht CSS die Angabe von Stileigenschaften für bestimmte Objekte im Layoutstrom des Webbrowsers, unabhängig vom verwendeten Ausgabegerät. Die dazu verwendeten Regeln bestehen aus einem Selektor zur Auswahl derjenigen Objekte, auf die eine Regel anwendbar ist, und aus einem Rumpf mit den neuen Stileigenschaften für diese Objekte. (Zu den Stileigenschaften gehören übrigens nicht nur sichtbare Eigenschaften wie die Hintergrundfarbe oder die Textgröße, sondern auch Tonhöhe oder Sprecher für akustische Ausgaben.) Eine weitere Stärke von CSS ist die Kaskadierung von Layoutbeschreibungen, die eine Anwendung mehrerer Regelsätze auf ein HTML-Dokument erlaubt. Abhängig von der Art und der Reihenfolge der Einbindung von CSS-Beschreibungen werden einzelne Regeln überschrieben, während andere vielleicht zusammengefasst werden.
In diesem Abschnitt sollen die wichtigsten Grundlagen der deklarativen Sprache zur Definition von Stileigenschaften noch einmal kurz aufgefrischt werden. Im Vordergrund steht dabei die Auswahl von Knoten aus dem Dokumentbaum mittels Selektoren, für die CSS eine eigene Syntax definiert. Folgende kombinierbare Selektoren stehen dabei zur Auswahl:
Der sehr häufig anzutreffende Elementselektor wählt alle Knoten eines Dokumentbaums aus, die einen angegebenen Elementtyp repräsentieren. Als Selektor wird dabei einfach der Name des gewünschten Elements angegeben.
Die Auswahl von Knoten eines Dokumentbaums kann auch
anhand von Attributwerten erfolgen. Dies hat den Vorteil, dass auch
Elementknoten mit unterschiedlichen Namen in einer Operation ausgewählt
werden können. Sehr häufig werden dazu die Attribute class und id verwendet,
für die deswegen Kurzschreibweisen eingeführt wurden. So kann der
eindeutige Bezeichner eines Elements mit dem Präfix „#“ angegeben werden, der Wert eines
Klassenattributs erhält den Präfix „.“.
Im allgemeinen Fall besteht ein Attributselektor aus der Angabe
des Attributnamens, gefolgt von einem Vergleichsoperator und einem
Attributwert, und wird zur Abgrenzung von anderen Selektoren in
eckige Klammern eingeschlossen. Der Selektor „.extern“ zur Auswahl aller Elementknoten,
deren class-Attribut das Wort „extern“
enthält, ließe sich also formulieren als [class~="extern"],
wobei der Operator „~=“ das
Vorkommen des angegebenen Werts in einer mit Leerzeichen getrennten
Aufzählung von Bezeichnern überprüft.
Weitere Operatoren in Attributselektoren erlauben die Prüfung
auf exakte Übereinstimmung („=“)
oder auf Übereinstimmung eines Bezeichners in einer mit Minuszeichen
getrennten Aufzählung („|=“).
Eine Besonderheit bildet schließlich die Form [name],
mit der alle Elemente ausgewählt werden, die über ein Attribut mit dem
angegebenen Namen verfügen.
Der Universalselektor „*“
dient zur Auswahl aller Elementknoten in einem Dokumentbaum, unabhängig vom
Elementtyp. Er wurde implizit bereits mit den Attributselektoren
eingeführt, da beispielsweise „.extern“
eine Kurzschreibweise für die Selektorkombination „*.extern“ ist.
Wie in CSS-Stil für Menü bereits gesehen, erfordert die Auswahl
von Knoten in komplexen Dokumenten oftmals die Berücksichtigung von
hierarchischen Beziehungen von Knoten untereinander. In CSS kann
diese Beziehung durch Aneinanderreihung mehrerer Selektoren ausgedrückt
werden, wobei diese jeweils durch Leerzeichen voneinander getrennt werden.
Der Ausdruck „#nav li a“ bezeichnet
somit alle Elemente des Typs a, die Nachfahren
von Listeneinträgen mit dem Elementtyp li sind,
die sich wiederum in einem beliebigen Element mit einem ID-Attribut nav befinden.
Soll die hierarchische Beziehung auf die unmittelbare Eltern-/Kindbeziehung
eingeschränkt werden, so kann dafür der Operator „>“ verwendet werden. Der oben angeführte
Selektor für
Ankerelemente in Listeneinträgen ließe sich also auch formulieren
als „#nav li > a“.
Um nur solche Elemente auszuwählen, die auf der
gleichen Hierarchieebene unmittelbar aufeinander folgen, kann der
Operator „+“ in einem Selektor eingesetzt
werden. Sollen also alle Listenelemente bis auf das erste mit einem
bestimmten Stil versehen werden, so könnte dies mit dem Selektor
„li + li“ bewirkt werden.
Neben den zuvor gezeigten Selektoren definiert
CSS noch
eine Reihe weiterer Selektoren für Elemente und Klassenattribute,
die keine Entsprechung im Dokumentbaum haben, u.a. die Pseudo-Klassen :hover, :visited und :active; mit der Stileigenschaft content kann Elementknoten textueller
Inhalt zugeordnet werden, besonders nützlich im Zusammenhang mit
Selektoren, die die Pseudo-Elemente :before und :after benutzen.
In der Praxis werden oft nur Elementselektoren sowie einfache Attributselektoren für Klassen und für Elemente mit eindeutigen Bezeichnern verwendet, um eine möglichst große Basis existierender Browser abzudecken (so beherrscht Internet Explorer bis einschließlich Version 6 weder den Kindelementselektor noch den Nachfolgerselektor und hat auch sonst allerlei Probleme mit nichttrivialen Selektoren; s. z.B. <http://www.quirksmode.org/css/contents.html>). Komplexe Selektoren lassen sich oftmals mit Hilfe von clientseitigen Skripten ersetzen, die auf dem Dokumentbaum operieren und so die Elementknoten auswählen, deren Stileigenschaften verändert werden sollen. Da dies vor allem für visuelle Effekte während der Darstellung eines Dokuments benötigt wird, ist die Trennung von Programmlogik und Präsentation an dieser Stelle ohnehin nicht mehr strikt einzuhalten. Wie in Trennung von Verhaltensweise und Struktur noch gezeigt wird, existieren zahlreiche Funktionsbibliotheken, die diese Aufgaben unterstützen und so zumindest einen systematischen Ansatz zur Aufrechterhaltung dieses Paradigmas erlauben.
Nachdem das darzustellende HTML-Dokument eingelesen und mit Stileigenschaften annotiert wurde, wird der Dokumentbaum vom Browser auf dem gewählten Ausgabegerät dargestellt. Für die visuelle Darstellung kann dies ein Bildschirm sein, ein Drucker oder das Display eines Mobiltelefons. Alternativ könnte aber auch eine Tonwiedergabe mit einem Screenreader gewünscht sein, für die weitere medienspezifische Annotationen denkbar sind.
Die Darstellung auf einem visuellen Ausgabemedium basiert auf dem sogenannten Box-Modell, also einer Anordnung von Layoutobjekten in einem Strom von recht-eckigen Bereichen. Jeder dieser Bereiche verfügt über einen Rahmen, einen festgelegten Abstand zu Nachbarbereichen und einen Abstand zwischen dem äußeren Rand und dem Inhalt des Bereichs. Die Hauptaufgabe des Browsers besteht nun darin, die Anordnung der Bereiche möglichst platzsparend entsprechend den festgelegten Abständen und der ermittelten Mindestausdehnung eines jeden Bereichs durchzuführen. Der Prozess gleicht dabei weitgehend dem Vorgehen eines Formatierers im Printbereich, wobei für die Bildschirmausgabe beispielsweise die Paginierung entfällt und einige Parameter anders berechnet werden als im Buchdruck.
Zu beachten ist, dass der aus dem Dokumentbaum erzeugte Layoutstrom
die Struktur des Dokuments widerspiegelt: Der rechteckige Bereich
für ein Element befindet sich grundsätzlich innerhalb der Begrenzungen
des umgebenden Elements. CSS bietet
mit der Stileigenschaft position
jedoch
die Möglichkeit, diese starre Hierarchie zu durchbrechen. So kann
ein Layoutobjekt samt
der Kindelemente mit der Angabe position:relative relativ
zur eigentlich normalen Position neu positioniert werden. Alternativ
dazu kann eine absolute Positionierung vorgenommen werden, bei der
das betreffende Objekt aus dem normalen Layoutstrom entfernt wird, d. h.
die Darstellung nachfolgender Objekte erfolgt so, als folgten sie
direkt auf den Vorgänger des absolut positionierten Objekts. Die
absolute Positionierung macht sich unter anderem der in Asynchroner Seitenaufbau skizzierte Mechanismus zum Verschieben
von Kartenausschnitten in Google Maps zunutze. Das voreingestellte Positionierungsschema
entspricht der Angabe position:static,
bei der keine Verschiebung gegenüber dem normalen Layoutstrom vorgenommen
wird.
Die Berechnung der Position von Layoutobjekten wird
im Wesentlichen von den Stileigenschaften position
und display
beeinflusst.
Mit display wird die Art der Darstellung festgelegt,
also ob es sich um ein Blockelement oder ein Inlineelement handelt.
Während Blockelemente grundsätzlich vertikal in den Layoutstrom
eingefügt werden, erfolgt die Anordnung für Inlineelemente horizontal entlang
der Schreibrichtung des jeweiligen Schriftsystems. Eine Besonderheit
stellt display:none dar: Ein
solches Objekt wird samt seiner Nachfahren aus dem Layoutstrom entfernt
und erscheint nicht auf dem Ausgabemedium. Die benachbarten Objekte
werden so dargestellt, als sei dieses Objekt nicht vorhanden. Diese
Eigenschaft nutzt beispielsweise TiddlyWiki für
den Datenspeicher, in dem die nicht angezeigten Tiddler intern gespeichert
werden.

Home • Über uns • Qualität • AGB • Impressum • Stadtlupe • Stellenangebote & Jobs
Die TEIA AG bietet Bücher, Lernprogramme, SCORM und kostenlose Online Kurse zu Microsoft-Anwendungen, Open Office, IT, Programmierung und Wirtschaft.
Zu fast allen Online Kursen können zudem Zertifkate oder Teilnahmebescheinigungen erworben werden.
Access 2002 • Access 2003 Basis • Access 2003 Prof. • Access 2007 Basis • Adobe GoLive • Adobe Photoshop • AJAX • Allgemeine Betriebswirtschaftslehre • Apache • Basiswissen für Selbstständige • Bewerbungstipps • Calc Basis • Dreamweaver CS4 • eBusiness • eCommerce • eGovernment • Erinnerung an Douaumont • Excel 2002 • Excel 2003 Basis • Excel 2003 Prof • Excel 2007 Basis • Excel 2007 Prof. • Excel 2010 Basis • Finanzmanagement • HTML • HTML CSS • HTML Grundlagen • Industriegütervertrieb • Internet Technik • JAVA • JavaScript • Lernen ohne Lehrer • Marketing • Markup-Sprachen • Organisation und Technologiemanagement • osCommerce • Outlook 2003 • Outlook 2007 • Perl und CGI • Personalmanagement • PHP 4.3 • PowerPoint 2003 • Powerpoint 2007 • Powerpoint 2010 • Projektmanagement und MS Project 2000 • Projektplanung und Projektoptimierung mit MS Project 2003 • Rechnungswesen mit Beispielen • Sicher auftreten • SQL • TEIA-Internet-Führerschein • Unternehmensführung • US-GAAP und IAS/IFRS • Vertragswesen eBusiness • Vista • VWL • Warum ich kein Christ sein will • Widerstand • Windows XP • Wirtschaftsrecht • Word 2002 • Word 2003 Basis • Word 2003 Prof. • Word 2007 Basis • Word 2007 Prof. • Writer Basis • XML • XML Grundlagen • XML XSL
Letzte Aktualisierung: 29.07.2010 13:03:16
Letzte Inhaltliche Überarbeitung: 29.06.2009 15:55:20
© 2000 - 2010 TEIA AG - Internet Akademie und Lehrbuch Verlag
Ihr Kommentar