Wertedefinition Syntax
Die CSS-Wertedefinition Syntax, eine formale Grammatik, wird verwendet, um die Menge der gültigen Werte für eine CSS-Eigenschaft oder Funktion zu definieren. Zusätzlich zu dieser Syntax kann die Menge der gültigen Werte durch semantische Einschränkungen weiter eingeschränkt werden (zum Beispiel, dass eine Zahl streng positiv sein muss).
Die Definitionssyntax beschreibt, welche Werte zulässig sind und die Interaktionen zwischen ihnen. Eine Komponente kann ein Schlüsselwort sein, einige Zeichen, die als Literal betrachtet werden, oder ein Wert eines gegebenen CSS-Datentyps oder einer anderen CSS-Eigenschaft.
Komponenten-Wertetypen
Schlüsselwörter
Allgemeine Schlüsselwörter
Ein Schlüsselwort mit einer vordefinierten Bedeutung erscheint wörtlich, ohne Anführungszeichen. Zum Beispiel: auto
, smaller
oder ease-in
.
Der spezielle Fall von inherit
, initial
und unset
Alle CSS-Eigenschaften akzeptieren die Schlüsselwörter inherit
, initial
und unset
. Sie werden in der Wertedefinition nicht angezeigt und sind implizit definiert.
Literale
In CSS können einige Zeichen allein stehen, wie der Schrägstrich (/
) oder das Komma (,
), und werden in einer Eigenschaftsdefinition verwendet, um ihre Teile zu trennen. Das Komma wird häufig verwendet, um Werte in Aufzählungen oder Parameter in mathematisch-ähnlichen Funktionen zu trennen; der Schrägstrich trennt oft Teile des Wertes, die semantisch unterschiedlich, aber syntaktisch gleich sind. Typischerweise wird der Schrägstrich in Kurzform-Eigenschaften verwendet; um Komponenten desselben Typs zu trennen, die jedoch zu unterschiedlichen Eigenschaften gehören.
Beide Symbole erscheinen wörtlich in einer Wertedefinition.
Datentypen
Grundlegende Datentypen
Einige Datentypen werden in ganz CSS verwendet und werden einmal für alle Werte in der Spezifikation definiert. Diese als grundlegende Datentypen bezeichnet, werden durch ihren Namen umgeben von den Symbolen <
und >
dargestellt: <angle>
, <string>
, …
Nicht-terminal Datentypen
Weniger gebräuchliche Datentypen, genannt nicht-terminal Datentypen, sind ebenfalls von <
und >
umgeben.
Nicht-terminale Datentypen gibt es in zwei Arten:
- Datentypen, die denselben Namen wie eine Eigenschaft teilen, in Anführungszeichen gesetzt. In diesem Fall teilt der Datentyp denselben Wertebereich wie die Eigenschaft. Sie werden häufig in der Definition von Kurzform-Eigenschaften verwendet.
- Datentypen, die nicht denselben Namen wie eine Eigenschaft teilen. Diese Datentypen sind den grundlegenden Datentypen sehr ähnlich. Sie unterscheiden sich von den grundlegenden Datentypen nur durch den physischen Ort ihrer Definition. In diesem Fall ist die Definition normalerweise physisch sehr nah an der Definition der Eigenschaft, die sie nutzt.
Komponenten-Wertekombinatoren
Klammern
Klammern umschließen mehrere Entitäten, Kombinatoren und Multiplikatoren und transformieren sie dann als eine einzige Komponente. Sie werden verwendet, um Komponenten zu gruppieren, um die Vorrangregeln zu umgehen.
bold [ thin && <length> ]
Dieses Beispiel entspricht folgenden Werten:
bold thin 2vh
bold 0 thin
bold thin 3.5em
Aber nicht:
thin bold 3em
, dabold
neben der durch die Klammern definierten Komponente steht, muss es davor erscheinen.
Aneinanderreihung
Mehrere Schlüsselwörter, Literale oder Datentypen nebeneinander zu platzieren, die nur durch ein oder mehrere Leerzeichen getrennt sind, wird Aneinanderreihung genannt. Alle aneinandergereihten Komponenten sind obligatorisch und sollten in der genauen Reihenfolge erscheinen.
bold <length>, thin
Dieses Beispiel entspricht folgenden Werten:
bold 1em, thin
bold 0, thin
bold 2.5cm, thin
bold 3vh, thin
Aber nicht:
thin 1em, bold
, da die Entitäten in der angegebenen Reihenfolge sein müssenbold 1em thin
, da die Entitäten obligatorisch sind; das Komma, ein Literal, muss vorhanden seinbold 0.5ms, thin
, da diems
Werte nicht<length>
sind
Doppeltes Und-Zeichen
Das Trennen von zwei oder mehr Komponenten durch ein doppeltes Und-Zeichen, &&
, bedeutet, dass all diese Entitäten obligatorisch, aber in beliebiger Reihenfolge erscheinen können.
bold && <length>
Dieses Beispiel entspricht folgenden Werten:
bold 1em
bold 0
2.5cm bold
3vh bold
Aber nicht:
bold
, da beide Komponenten in dem Wert erscheinen müssen.bold 1em bold
, da beide Komponenten nur einmal erscheinen dürfen.
Hinweis: Die Aneinanderreihung hat Vorrang vor dem doppelten Und-Zeichen, was bedeutet, dass bold thin && <length>
gleichbedeutend ist mit [ bold thin ] && <length>
. Es beschreibt bold thin <length>
oder <length> bold thin
, aber nicht bold <length> thin
.
Doppelbalken
Das Trennen von zwei oder mehr Komponenten durch einen Doppelbalken, ||
, bedeutet, dass alle Entitäten Optionen sind: Mindestens eine muss vorhanden sein, und sie können in beliebiger Reihenfolge erscheinen. Typischerweise wird dies verwendet, um die verschiedenen Werte einer Kurzform-Eigenschaft zu definieren.
<'border-width'> || <'border-style'> || <'border-color'>
Dieses Beispiel entspricht folgenden Werten:
1em solid blue
blue 1em
solid 1px yellow
Aber nicht:
blue yellow
, da eine Komponente nur einmal erscheinen darf.bold
, da es kein Schlüsselwort ist, das als Wert einer der Entitäten zulässig ist.
Hinweis: Das doppelte Und-Zeichen hat Vorrang vor dem Doppelbalken, was bedeutet, dass bold || thin && <length>
gleichbedeutend ist mit bold || [ thin && <length> ]
. Es beschreibt bold
, thin <length>
, bold thin <length>
, oder thin <length> bold
, jedoch nicht <length> bold thin
, da bold, wenn nicht weggelassen, vor oder nach der gesamten thin && <length>
-Komponente platziert werden muss.
Einfacher Balken
Das Trennen von zwei oder mehr Entitäten durch einen einfachen Balken, |
, bedeutet, dass alle Entitäten exklusive Optionen sind: Genau eine dieser Optionen muss vorhanden sein. Dies wird typischerweise verwendet, um eine Liste möglicher Schlüsselwörter zu trennen.
<percentage> | <length> | left | center | right | top | bottom
Dieses Beispiel entspricht folgenden Werten:
3%
0
3.5em
left
center
right
top
bottom
Aber nicht:
center 3%
, da nur eine der Komponenten vorhanden sein darf.3em 4.5em
, da eine Komponente höchstens einmal vorhanden sein darf.
Hinweis: Der Doppelbalken hat Vorrang vor dem einfachen Balken, was bedeutet, dass bold | thin || <length>
gleichbedeutend ist mit bold | [ thin || <length> ]
. Es beschreibt bold
, thin
, <length>
, <length> thin
, oder thin <length>
, jedoch nicht bold <length>
, da nur eine Entität von jeder Seite des |
Kombinators vorhanden sein kann.
Komponenten-Wertmultiplikatoren
Ein Multiplikator ist ein Zeichen, das angibt, wie oft eine vorhergehende Entität wiederholt werden kann. Ohne Multiplikator muss eine Entität genau einmal erscheinen.
Multiplikatoren können nicht hinzugefügt werden und haben Vorrang vor allen Kombinatoren.
Sternchen (*
)
Der Sternchen-Multiplikator gibt an, dass die Entität null, einmal oder mehrmals erscheinen kann.
bold smaller*
Dieses Beispiel entspricht folgenden Werten:
bold
bold smaller
bold smaller smaller
bold smaller smaller smaller
, und so weiter.
Aber nicht:
smaller
, dabold
aneinandergereiht ist und vor jedemsmaller
-Schlüsselwort erscheinen muss.
Pluszeichen (+
)
Der Plus-Multiplikator gibt an, dass die Entität einmal oder mehrmals erscheinen kann.
bold smaller+
Dieses Beispiel entspricht folgenden Werten:
bold smaller
bold smaller smaller
bold smaller smaller smaller
, und so weiter.
Aber nicht:
bold
, dasmaller
mindestens einmal erscheinen muss.smaller
, dabold
aneinandergereiht ist und vor jedemsmaller
-Schlüsselwort erscheinen muss.
Fragezeichen (?
)
Der Fragezeichen-Multiplikator zeigt an, dass die Entität optional ist und null oder einmal erscheinen muss.
bold smaller?
Dieses Beispiel entspricht folgenden Werten:
bold
bold smaller
Aber nicht:
bold smaller smaller
, dasmaller
höchstens einmal erscheinen darf.smaller
, dabold
aneinandergereiht ist und vor jedemsmaller
-Schlüsselwort erscheinen muss.
Geschweifte Klammern ({ }
)
Der Multiplikator für geschweifte Klammern, der zwei durch ein Komma getrennte Ganzzahlen A und B einschließt, gibt an, dass die Entität mindestens A-mal und höchstens B-mal erscheinen muss.
bold smaller{1,3}
Dieses Beispiel entspricht folgenden Werten:
bold smaller
bold smaller smaller
bold smaller smaller smaller
Aber nicht:
bold
, dasmaller
mindestens einmal erscheinen muss.bold smaller smaller smaller smaller
, dasmaller
höchstens dreimal erscheinen darf.smaller
, dabold
aneinandergereiht ist und vor jedemsmaller
-Schlüsselwort erscheinen muss.
Rautezeichen (#
)
Der Rautezeichen-Multiplikator gibt an, dass die Entität einmal oder mehrmals wiederholt werden kann (z.B. der Plus-Multiplikator), aber jedes Vorkommen wird durch ein Komma (',') getrennt.
bold smaller#
Dieses Beispiel entspricht folgenden Werten:
bold smaller
bold smaller, smaller
bold smaller, smaller, smaller
, und so weiter.
Aber nicht:
bold
, dasmaller
mindestens einmal erscheinen muss.bold smaller smaller smaller
, da die verschiedenen Vorkommen vonsmaller
durch Kommas getrennt sein müssen.smaller
, dabold
aneinandergereiht ist und vor jedemsmaller
-Schlüsselwort erscheinen muss.
Das Rautezeichen kann optional von geschweiften Klammern gefolgt werden, um anzugeben, wie oft die Entität wiederholt wird.
bold smaller#{1,3}
Dieses Beispiel entspricht folgenden Werten:
bold smaller
bold smaller, smaller
bold smaller, smaller, smaller
Aber nicht:
bold smaller, smaller, smaller, smaller
, dasmaller
höchstens dreimal erscheinen darf.
bold smaller#{2}
Dieses Beispiel entspricht dem folgenden Wert:
bold smaller, smaller
Aber nicht:
bold smaller
, dasmaller
genau zweimal erscheinen muss.
Ausrufezeichen (!
)
Der Ausrufezeichen-Multiplikator nach einer Gruppe gibt an, dass die Gruppe erforderlich ist und mindestens einen Wert erzeugen muss; selbst wenn die Grammatik der Elemente innerhalb der Gruppe andernfalls erlauben würde, dass der gesamte Inhalt ausgelassen wird, darf mindestens ein Komponentenwert nicht ausgelassen werden.
[ bold? smaller? ]!
Dieses Beispiel entspricht folgenden Werten:
bold
smaller
bold smaller
Aber nicht:
- weder
bold
nochsmaller
, da einer von ihnen erscheinen muss. smaller bold
, dabold
aneinandergereiht ist und vor demsmaller
-Schlüsselwort erscheinen muss.bold smaller bold
, dabold
undsmaller
nur einmal erscheinen dürfen.
Klammerbereichsnotation ([min,max]
)
Einige Typen können numerische Werte innerhalb eines bestimmten Bereichs akzeptieren. Zum Beispiel kann die column-count
-Eigenschaft einen ganzzahligen Wert zwischen positiv 1 und Unendlich, inklusive, akzeptieren. Die entsprechende Syntax sieht folgendermaßen aus:
<integer [1,∞]>
Ein Wert außerhalb dieses angegebenen Bereichs führt dazu, dass die gesamte Deklaration ungültig ist, und wird daher vom Browser ignoriert.
Die Klammerbereichsnotation [min, max]
gibt einen inklusiven Bereich zwischen einem min
- und max
-Wert an. Diese Notation wird in numerischen Typ-Notationen verwendet und kann Einheiten enthalten, z.B. <angle [0,180deg]>
. Positive und negative Unendlichkeit (-∞ und ∞) dürfen keine Einheiten haben. In Einheiten spezifizierte Typen können Nullwerte mit oder ohne Einheiten haben, z.B. <time [0s,10s]>
oder <time [0,10s]>
.
Hier sind einige weitere Beispiele:
<integer [-∞,∞]>
: Jede ganze Zahl von negativer Unendlichkeit bis positiver Unendlichkeit.<integer [0,∞]>
: Jede ganze Zahl von 0 bis positive Unendlichkeit ist gültig. Negative ganze Zahlen sind ungültig.<time [0s,10s]>
oder<time [0,10s]>
: Jede Dauer von 0 bis 10 Sekunden ist gültig.<integer [-∞,-1]> | <integer [1,∞]>
: Jede ganze Zahl außer Null ist gültig.
Zusammenfassung
Zeichen | Name | Beschreibung | Beispiel |
---|---|---|---|
Kombinatoren | |||
Aneinanderreihung | Komponenten sind obligatorisch und sollten in dieser Reihenfolge erscheinen | solid <length> |
|
&& |
Doppeltes Und-Zeichen | Komponenten sind obligatorisch, können aber in beliebiger Reihenfolge erscheinen | <length> && <string> |
|| |
Doppelbalken | Mindestens eine der Komponenten muss vorhanden sein, und sie können in beliebiger Reihenfolge erscheinen. | <'border-image-outset'> || <'border-image-slice'> |
| |
Einfacher Balken | Genau eine der Komponenten muss vorhanden sein | smaller | small | normal | big | bigger |
[ ] |
Klammern | Gruppieren von Komponenten, um Vorrangregeln zu umgehen | bold [ thin && <length> ] |
Multiplikatoren | |||
Kein Multiplikator | Genau 1 Mal | solid |
|
* |
Sternchen | 0 oder mehr Male | bold smaller* |
+ |
Pluszeichen | 1 oder mehr Male | bold smaller+ |
? |
Fragezeichen | 0 oder 1 Mal (optional) | bold smaller? |
{min,max} |
Geschweifte Klammern | Mindestens min Mal, höchstens max Mal |
bold smaller{1,3} |
# |
Rautezeichen |
1 oder mehr Male, wobei jedes Vorkommen durch ein Komma
(, ) getrennt ist
|
bold smaller# |
! |
Ausrufezeichen | Gruppe muss mindestens 1 Wert erzeugen | [ bold? smaller? ]! |
Bereiche | |||
[min,max] |
Numerischer Klammerbereich | Gibt einen numerischen Bereich an | <integer [0,∞]> |
Spezifikationen
Specification |
---|
CSS Values and Units Module Level 4 # value-defs |
Siehe auch
- Wichtige CSS-Konzepte: