Einführung in die CSS-Syntax: Deklarationen, Regelsätze und Anweisungen
Das grundlegende Ziel der Cascading Stylesheet (CSS)-Sprache besteht darin, einer Browser-Engine zu ermöglichen, Elemente der Seite mit spezifischen Eigenschaften zu versehen, wie Farben, Positionierung oder Dekorationen. Die CSS-Syntax spiegelt dieses Ziel wider und ihre grundlegenden Bausteine sind:
- Die Eigenschaft, die ein Bezeichner ist, also ein lesbarer Name, der definiert, welche Funktion betrachtet wird.
- Der Wert, der beschreibt, wie die Funktion von der Engine gehandhabt werden muss. Jede Eigenschaft hat eine Reihe von gültigen Werten, die durch eine formale Grammatik definiert sind, sowie eine semantische Bedeutung, die von der Browser-Engine implementiert wird.
CSS-Deklarationen
Das Zuweisen spezifischer Werte an CSS-Eigenschaften ist die Kernfunktion der CSS-Sprache. Ein Paar aus Eigenschaft und Wert wird als Deklaration bezeichnet, und jede CSS-Engine berechnet, welche Deklarationen auf jedes einzelne Element einer Seite angewendet werden, um diese entsprechend zu layouten und zu gestalten.
In CSS sind sowohl Eigenschaften als auch Werte standardmäßig nicht zwischen Groß- und Kleinschreibung unterscheidbar. Das Paar wird durch einen Doppelpunkt, :
(U+003A KOLON), getrennt und Leerzeichen vor, zwischen und nach Eigenschaften und Werten, aber nicht notwendigerweise innerhalb, werden ignoriert.
Es gibt Hunderte unterschiedlicher Eigenschaften in CSS und praktisch eine endlose Anzahl unterschiedlicher Werte. Nicht alle Paare aus Eigenschaften und Werten sind erlaubt, und jede Eigenschaft definiert, welche Werte gültig sind. Wenn ein Wert für eine gegebene Eigenschaft nicht gültig ist, wird die Deklaration als ungültig angesehen und vom CSS-Engine vollständig ignoriert.
CSS-Deklarationsblöcke
Deklarationen werden in Blöcken gruppiert, das heißt in einer Struktur, die von einer öffnenden Klammer, {
(U+007B LINKE GESCHWEIFTE KLAMMER), und einer schließenden Klammer, }
(U+007D RECHTE GESCHWEIFTE KLAMMER), begrenzt wird. Blöcke können manchmal verschachtelt sein, daher müssen die öffnenden und schließenden Klammern übereinstimmen.
Solche Blöcke werden natürlich als Deklarationsblöcke bezeichnet, und Deklarationen innerhalb von ihnen werden durch ein Semikolon, ;
(U+003B SEMIKOLON), getrennt. Ein Deklarationsblock kann leer sein, das heißt, eine null Deklaration enthalten. Leerzeichen um Deklarationen herum werden ignoriert. Die letzte Deklaration eines Blocks muss nicht mit einem Semikolon abgeschlossen werden, obwohl es oft als guter Stil angesehen wird, dies zu tun, da es verhindert, es zu vergessen, wenn der Block durch eine weitere Deklaration erweitert wird.
Ein CSS-Deklarationsblock wird im Diagramm unten visualisiert.
Hinweis:
Der Inhalt eines CSS-Deklarationsblocks, also eine Liste von Semikolon-getrennten Deklarationen ohne die anfänglichen und schließenden Klammern, kann in einem HTML-[
style`](/de/docs/Web/HTML/Reference/Global_attributes/style)-Attribut eingefügt werden.
CSS-Regelsätze
Wenn Stylesheets nur eine Deklaration auf jedes Element einer Webseite anwenden könnten, wären sie ziemlich nutzlos. Das eigentliche Ziel ist es, verschiedene Deklarationen auf verschiedene Teile des Dokuments anzuwenden.
CSS ermöglicht dies durch die Zuordnung von Bedingungen zu Deklarationsblöcken. Jeder (gültige) Deklarationsblock wird von einem oder mehreren durch Kommas getrennten Selektoren vorangegangen, die Bedingungen darstellen, die einige Elemente der Seite auswählen. Eine Selektorliste und ein zugeordneter Deklarationsblock zusammen werden als Regelsatz oder oft als Regel bezeichnet.
Ein CSS-Regelsatz (oder Regel) wird im Diagramm unten visualisiert.
Da ein Element der Seite möglicherweise von mehreren Selektoren erfasst wird und daher von mehreren Regeln, die möglicherweise eine gegebene Eigenschaft mehrmals mit unterschiedlichen Werten enthalten, definiert der CSS-Standard, welche Vorrang haben und angewendet werden müssen: das nennt man das Kaskade-Algorithmus (siehe Konfliktbehandlung).
Hinweis: Es ist wichtig zu beachten, dass auch wenn ein durch eine Gruppe von Selektoren gekennzeichneter Regelsatz eine Art Kurzform ist, die Regelsätze mit jeweils einem einzelnen Selektor ersetzt, dies nicht auf die Gültigkeit des Regelsatzes selbst zutrifft.
Dies führt zu einer wichtigen Konsequenz: Wenn ein einziger Basisselektor ungültig ist, wie bei der Verwendung eines unbekannten Pseudo-Elements oder einer Pseudo-Klasse, ist der gesamte Selektor ungültig und daher wird die gesamte Regel ignoriert (ebenfalls ungültig).
CSS-Anweisungen
Regelsätze sind die Hauptbausteine eines Stylesheets, das oft nur aus einer großen Liste davon besteht. Aber es gibt andere Informationen, die ein Webautor im Stylesheet übermitteln möchte, wie den Zeichensatz, andere externe Stylesheets zum Importieren, Schriftart-Darstellungen oder Zählbeschreibungen und vieles mehr. Dazu werden andere und spezifische Arten von Anweisungen verwendet.
Eine Anweisung ist ein Baustein, der mit einem beliebigen, nicht-leerzeichen Zeichen beginnt und an der ersten schließenden Klammer oder Semikolon endet (außerhalb eines Strings, nicht-escaped und nicht in ein anderes {}, () oder []-Paar eingeschlossen).
Es gibt zwei Arten von Anweisungen:
- Regelsätze (oder Regeln), die, wie gesehen, eine Sammlung von CSS-Deklarationen einer durch einen Selektor beschriebenen Bedingung zuordnen.
- At-Regeln, die mit einem At-Zeichen,
@
(U+0040 KOMMERZIELLES AT), beginnen, gefolgt von einem Bezeichner und dann bis zum Ende der Anweisung fortfahren, das ist bis zum nächsten Semikolon (;) außerhalb eines Blocks oder dem Ende des nächsten Blocks. Jede Art von at-Regeln, definiert durch den Bezeichner, kann ihre eigene interne Syntax haben, und selbstverständlich auch Semantik. Sie werden verwendet, um Meta-Informationen zu übermitteln (wie@layer
oder@import
), bedingte Informationen (wie@media
oder@document
), oder beschreibende Informationen (wie@font-face
).
Jede Anweisung, die weder ein Regelsatz noch eine at-Regel ist, ist ungültig und wird ignoriert.
Verschachtelte Anweisungen
Es gibt eine weitere Gruppe von Anweisungen – die verschachtelten Anweisungen. Diese Anweisungen können in einem spezifischen Unterset von at-Regeln verwendet werden – den bedingten Gruppenregeln. Diese Anweisungen gelten nur, wenn eine bestimmte Bedingung erfüllt ist: Der Inhalt der @media
-at-Regel wird nur angewendet, wenn das Gerät, auf dem der Browser läuft, die ausgedrückte Bedingung erfüllt; der Inhalt der @document
-at-Regel wird nur angewendet, wenn die aktuelle Seite einige Bedingungen erfüllt, und so weiter. In CSS1 und CSS2.1 konnten nur Regelsätze innerhalb der bedingten Gruppenregeln verwendet werden. Das war sehr einschränkend und diese Einschränkung wurde in CSS Conditionals Level 3 aufgehoben. Jetzt, obwohl noch experimentell und nicht von jedem Browser unterstützt, können bedingte Gruppenregeln einen breiteren Inhalt enthalten: Regelsätze, aber auch einige, jedoch nicht alle, at-Regeln.