Wertdefinition Syntax
Die CSS-Wertdefinition 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 strikt positiv sein muss).
Die Definitionen Syntax beschreibt, welche Werte erlaubt sind und wie sie zueinander interagieren. Eine Komponente kann ein Schlüsselwort, einige Zeichen als Literal, oder ein Wert eines gegebenen CSS-Datentyps oder einer anderen CSS-Eigenschaft sein.
Komponentenwerttypen
>Schlüsselwörter
Generische Schlüsselwörter
Ein Schlüsselwort mit einer vordefinierten Bedeutung erscheint wörtlich, ohne Anführungszeichen. Zum Beispiel: auto, smaller oder ease-in.
CSS-weite Schlüsselwörter
Alle CSS-Eigenschaften akzeptieren die Schlüsselwörter inherit, initial, revert, revert-layer und unset. Sie werden nicht in der Wertdefinition angezeigt und sind implizit definiert.
Literale
In CSS können einige Zeichen alleine stehen, wie der Schrägstrich (/) oder das Komma (,), und werden in einer Eigenschaftsdefinition verwendet, um deren Teile zu trennen. Das Komma wird oft verwendet, um Werte in Aufzählungen oder Parameter in mathematischen Funktionen zu trennen; der Schrägstrich trennt oft Teile des Wertes, die semantisch unterschiedlich sind, aber eine gemeinsame Syntax haben. Typischerweise wird der Schrägstrich in Kurzschreib-Eigenschaften verwendet; um Komponenten desselben Typs zu trennen, die zu verschiedenen Eigenschaften gehören.
Beide Symbole erscheinen wörtlich in einer Wertdefinition.
Datentypen
Grundlegende Datentypen
Einige Datentypen werden in ganz CSS verwendet und sind einmalig für alle Werte in der Spezifikation definiert. Diese als grundlegende Datentypen bezeichneten Typen werden mit ihrem Namen dargestellt, umgeben von den Symbolen < und >: <angle>, <string>, …
Nicht-terminale Datentypen
Weniger gebräuchliche Datentypen, als nicht-terminale Datentypen bezeichnet, sind ebenfalls von < und > umgeben.
Nicht-terminale Datentypen sind von zwei Arten:
- Datentypen, die den gleichen Namen wie eine Eigenschaft teilen, in Anführungszeichen gesetzt. In diesem Fall teilt der Datentyp denselben Wertensatz wie die Eigenschaft. Sie werden oft in der Definition von Kurzschreib-Eigenschaften verwendet.
- Datentypen, die den gleichen Namen nicht teilen wie eine Eigenschaft. Diese Datentypen sind den grundlegenden Datentypen sehr nahe. Sie unterscheiden sich nur in der physischen Lage ihrer Definition von den grundlegenden Datentypen. In diesem Fall befindet sich die Definition normalerweise physisch sehr nah an der Definition der Eigenschaft, die sie verwendet.
Komponentenwert-Kombinatoren
>Klammern
Klammern umschließen mehrere Entitäten, Kombinatoren und Multiplikatoren und verwandeln sie dann in eine einzelne Komponente. Sie werden verwendet, um Komponenten zu gruppieren, um die Vorrangregeln zu umgehen.
example =
bold [ thin && <length> ]
Dieses Beispiel passt zu den folgenden Werten:
bold thin 2vhbold 0 thinbold thin 3.5em
Aber nicht:
thin bold 3em, daboldmit der Komponente, die durch die Klammern definiert ist, juxtapositioniert ist, muss es davor erscheinen.
Juxtaposition
Das Platzieren mehrerer Schlüsselwörter, Literale oder Datentypen nebeneinander, nur durch eines oder mehrere Leerzeichen getrennt, wird Juxtaposition genannt. Alle juxtapositionierten Komponenten sind obligatorisch und müssen in genau dieser Reihenfolge erscheinen.
example =
bold <length> , thin
Dieses Beispiel passt zu den folgenden Werten:
bold 1em, thinbold 0, thinbold 2.5cm, thinbold 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 keine<length>sind
Doppelte kaufmännische Und-Zeichen
Das Trennen von zwei oder mehr Komponenten durch ein doppeltes kaufmännisches Und-Zeichen, &&, bedeutet, dass alle diese Entitäten obligatorisch sind, aber in beliebiger Reihenfolge erscheinen können.
example =
bold &&
<length>
Dieses Beispiel passt zu den folgenden Werten:
bold 1embold 02.5cm bold3vh bold
Aber nicht:
bold, da beide Komponenten im Wert erscheinen müssen.bold 1em bold, da beide Komponenten nur einmal erscheinen dürfen.
Hinweis:
Die Juxtaposition hat Vorrang vor dem doppelten kaufmännischen 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.
Doppelte vertikale Linie
Das Trennen von zwei oder mehr Komponenten durch eine doppelte vertikale Linie, ||, 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 Kurzschreib-Eigenschaft zu definieren.
example =
<number> ||
<length> ||
<color>
Dieses Beispiel passt zu den folgenden Werten:
1em 1 blueblue 1em1 1px yellow
Aber nicht:
blue yellow, da eine Komponente höchstens einmal erscheinen muss.bold, da es kein erlaubtes Schlüsselwort für einen der Entitäten ist.
Hinweis:
Das doppelte kaufmännische Und-Zeichen hat Vorrang vor der doppelten vertikalen Linie, was bedeutet, dass bold || thin && <length> gleichbedeutend ist mit bold || [ thin && <length> ]. Es beschreibt bold, thin <length>, bold thin <length>, oder thin <length> bold, aber nicht <length> bold thin, da bold, wenn nicht weggelassen, vor oder nach der gesamten thin && <length>-Komponente platziert werden muss.
Einzelne vertikale Linie
Das Trennen von zwei oder mehr Entitäten durch eine einzelne vertikale Linie, |, bedeutet, dass alle Entitäten exklusive Optionen sind: genau eine dieser Optionen muss präsent sein. Dies wird normalerweise verwendet, um eine Liste möglicher Schlüsselwörter zu trennen.
example =
<percentage> |
<length> |
left |
center |
right |
top |
bottom
Dieses Beispiel passt zu den folgenden Werten:
3%03.5emleftcenterrighttopbottom
Aber nicht:
center 3%, da nur eine der Komponenten vorhanden sein muss.3em 4.5em, da eine Komponente höchstens einmal vorhanden sein darf.
Hinweis:
Die doppelte vertikale Linie hat Vorrang vor der einzelnen vertikalen Linie, was bedeutet, dass bold | thin || <length> gleichbedeutend ist mit bold | [ thin || <length> ]. Es beschreibt bold, thin, <length>, <length> thin, oder thin <length>, aber nicht bold <length>, da nur eine Entität von jeder Seite des | Kombinators vorhanden sein kann.
Komponentenwert-Multiplikatoren
Ein Multiplikator ist ein Zeichen, das angibt, wie oft eine vorhergehende Entität wiederholt werden kann. Ohne einen 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 mehrere Male erscheinen kann.
example =
bold smaller*
Dieses Beispiel passt zu den folgenden Werten:
boldbold smallerbold smaller smallerbold smaller smaller smaller, und so weiter.
Aber nicht:
smaller, daboldjuxtapositioniert ist, und vor jedemsmaller-Schlüsselwort erscheinen muss.
Pluszeichen (+)
Der Plus-Multiplikator gibt an, dass die Entität ein- oder mehrmals erscheinen kann.
example =
bold smaller+
Dieses Beispiel passt zu den folgenden Werten:
bold smallerbold smaller smallerbold smaller smaller smaller, und so weiter.
Aber nicht:
bold, dasmallermindestens einmal erscheinen muss.smaller, daboldjuxtapositioniert ist und vor jedemsmaller-Schlüsselwort erscheinen muss.
Fragezeichen (?)
Der Fragezeichen-Multiplikator gibt an, dass die Entität optional ist, und null oder einmal erscheinen muss.
example =
bold smaller?
Dieses Beispiel passt zu den folgenden Werten:
boldbold smaller
Aber nicht:
bold smaller smaller, dasmallerhöchstens einmal erscheinen darf.smaller, daboldjuxtapositioniert ist und vor jedemsmaller-Schlüsselwort erscheinen muss.
Geschweifte Klammern ({ })
Der Multiplikator mit geschweiften Klammern, der zwei durch ein Komma getrennte ganze Zahlen, A und B, einschließt, gibt an, dass die Entität mindestens A mal und höchstens B mal erscheinen muss.
example =
bold smaller{1,3}
Dieses Beispiel passt zu den folgenden Werten:
bold smallerbold smaller smallerbold smaller smaller smaller
Aber nicht:
bold, dasmallermindestens einmal erscheinen muss.bold smaller smaller smaller smaller, dasmallerhöchstens dreimal erscheinen darf.smaller, daboldjuxtapositioniert ist und vor jedemsmaller-Schlüsselwort erscheinen muss
Rautezeichen (#)
Der Rautezeichen-Multiplikator gibt an, dass die Entität einmal oder öfter wiederholt werden kann (zum Beispiel der Plus-Multiplikator), aber jede Vorkommen wird durch Kommas (',') getrennt.
example =
bold smaller#
Dieses Beispiel passt zu den folgenden Werten:
bold smallerbold smaller, smallerbold smaller, smaller, smaller, und so weiter.
Aber nicht:
bold, dasmallermindestens einmal erscheinen muss.bold smaller smaller smaller, da die verschiedenen Vorkommen vonsmallerdurch Kommas getrennt sein müssen.smaller, daboldjuxtapositioniert ist und vor jedemsmaller-Schlüsselwort erscheinen muss.
Das Rautezeichen kann optional von geschweiften Klammern gefolgt werden, um anzuzeigen, wie oft die Entität wiederholt wird.
example =
bold smaller#{1,3}
Dieses Beispiel passt zu den folgenden Werten:
bold smallerbold smaller, smallerbold smaller, smaller, smaller
Aber nicht:
bold smaller, smaller, smaller, smaller, dasmallerhöchstens dreimal erscheinen darf.
example =
bold smaller#{2}
Dieses Beispiel passt zu folgendem Wert:
bold smaller, smaller
Aber nicht:
bold smaller, dasmallergenau 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 es sonst erlauben würde, die gesamten Inhalte wegzulassen, muss mindestens ein Komponentenwert nicht weggelassen werden.
example =
[ bold? smaller? ]!
Dieses Beispiel passt zu den folgenden Werten:
boldsmallerbold smaller
Aber nicht:
- weder
boldnochsmaller, da einer von ihnen erscheinen muss. smaller bold, daboldjuxtapositioniert ist und vor demsmaller-Schlüsselwort erscheinen muss.bold smaller bold, daboldundsmallernur einmal erscheinen dürfen.
Eingeschlossene Bereichsnotation ([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, einschließlich, akzeptieren. Die entsprechende Syntax sieht so aus:
example =
<integer [1,∞]>
Ein Wert außerhalb dieses angegebenen Bereichs führt dazu, dass die gesamte Deklaration ungültig ist, daher wird der Browser ihn ignorieren.
Die eingeschlossene Bereichsnotation [min, max] gibt einen inklusiven Bereich zwischen einem min- und max-Wert an. Diese Notation wird in numerischen Typnotationen verwendet und kann Einheiten beinhalten, z.B., <angle [0,180deg]>. Positive und negative Unendlichkeit (-∞ und ∞) dürfen keine Einheiten haben. Typen, die in Einheiten angegeben sind, können null Werte mit oder ohne Einheiten spezifiziert haben, zum Beispiel <time [0s,10s]> oder <time [0,10s]>.
Hier sind einige weitere Beispiele:
<integer [-∞,∞]>: Beliebige Ganzzahl von negativer Unendlichkeit bis positiver Unendlichkeit.<integer [0,∞]>: Beliebige Ganzzahl von 0 bis positive Unendlichkeit ist gültig. Negative Ganzzahlen 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 Ganzzahl außer null ist gültig.
Zusammenfassung
| Zeichen | Name | Beschreibung | Beispiel |
|---|---|---|---|
| Kombinatoren | |||
| Juxtaposition | Komponenten sind obligatorisch und müssen in dieser Reihenfolge erscheinen | solid <length> |
|
&& |
Doppeltes kaufmännisches Und-Zeichen | Komponenten sind obligatorisch, können aber in beliebiger Reihenfolge erscheinen | <length> && <string> |
|| |
Doppelte vertikale Linie | Mindestens eine der Komponenten muss vorhanden sein, und sie können in beliebiger Reihenfolge erscheinen. |
<'border-image-outset'> || <'border-image-slice'>
|
| |
Einzelne vertikale Linie | Genau eine der Komponenten muss vorhanden sein | smaller | small | normal | big | bigger |
[ ] |
Klammern | Komponenten gruppieren, um Vorrangregeln zu umgehen | bold [ thin && <length> ] |
| Multiplikatoren | |||
| Kein Multiplikator | Genau 1 mal | solid |
|
* |
Sternchen | 0 oder mehrmals | bold smaller* |
+ |
Pluszeichen | 1 oder mehrmals | bold smaller+ |
? |
Fragezeichen | 0 oder 1 mal (das heißt optional) | bold smaller? |
{min,max} |
Geschweifte Klammern | Mindestens min mal, höchstens max mal |
bold smaller{1,3} |
# |
Rautezeichen |
1 oder mehrmals, wobei jedes Vorkommen durch ein Komma
(,) getrennt ist
|
bold smaller# |
! |
Ausrufezeichen | Gruppe muss mindestens 1 Wert erzeugen | [ bold? smaller? ]! |
| Bereiche | |||
[min,max] |
Numerischer eingeschlossener Bereich | Gibt einen numerischen Bereich an | <integer [0,∞]> |
Spezifikationen
| Specification |
|---|
| CSS Values and Units Module Level 4> # value-defs> |
Siehe auch
- CSS Schlüsselkonzepte: