Wertdefinition-Syntax
Die CSS-Wertdefinition-Syntax, eine formale Grammatik, wird verwendet, um die Menge an gültigen Werten 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, wenn eine Zahl streng positiv sein muss).
Die Definition-Syntax beschreibt, welche Werte zulässig sind und die Wechselwirkungen zwischen ihnen. Eine Komponente kann ein Schlüsselwort, einige Zeichen, die als Literal betrachtet werden, oder ein Wert eines bestimmten CSS-Datentyps oder einer anderen CSS-Eigenschaft sein.
Komponententypen
>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
Im CSS können einige Zeichen eigenständig erscheinen, wie der Schrägstrich (/) oder das Komma (,), und werden in einer Eigenschaftendefinition genutzt, um ihre Teile zu trennen. Das Komma wird oft verwendet, um Werte in Aufzählungen oder Parameter in mathematisch ähnlichen Funktionen zu trennen; der Schrägstrich trennt oft Teile des Wertes, die semantisch verschieden sind, aber eine gemeinsame Syntax haben. Typischerweise wird der Schrägstrich in Kurzschreibeigenschaften verwendet, um Komponenten des gleichen Typs, die zu verschiedenen Eigenschaften gehören, zu trennen.
Beide Symbole erscheinen wörtlich in einer Wertdefinition.
Datentypen
Basisdatentypen
Einige Datentypen werden im gesamten CSS verwendet und sind einmal für alle Werte in der Spezifikation definiert. Diese werden als Basisdatentypen bezeichnet und werden durch ihren Namen dargestellt, umgeben von den Zeichen < und >: <angle>, <string>, …
Nicht-terminale Datentypen
Weniger gängige Datentypen, sogenannte nicht-terminale Datentypen, sind ebenfalls von < und > umgeben.
Nicht-terminale Datentypen gibt es in zwei Arten:
- Datentypen mit dem gleichen Namen wie eine Eigenschaft, in Anführungszeichen gesetzt. In diesem Fall teilt der Datentyp die gleiche Menge an Werten wie die Eigenschaft. Sie werden oft in der Definition von Kurzschreibeigenschaften verwendet.
- Datentypen ohne den gleichen Namen wie eine Eigenschaft. Diese Datentypen sind den Basisdatentypen sehr nahe. Sie unterscheiden sich von den Basisdatentypen nur im physischen Ort ihrer Definition. In diesem Fall ist die Definition normalerweise physisch sehr nah an der Definition der Eigenschaft, die sie verwendet.
Kombinatoren für Komponentenwerte
>Klammern
Klammern umfassen mehrere Entitäten, Kombinatoren und Multiplikatoren, und transformieren 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 zu:
thin bold 3em, daboldmit der Komponente, die durch die Klammern definiert ist, in Reihe steht, muss es davor erscheinen.
Nebeneinanderstellung
Das Platzieren mehrerer Schlüsselwörter, Literale oder Datentypen nebeneinander, nur durch ein oder mehrere Leerzeichen getrennt, wird Nebeneinanderstellung genannt. Alle nebeneinandergestellten Komponenten sind zwingend erforderlich und müssen in der genauen 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 zu:
thin 1em, bold, da die Entitäten in der angegebenen Reihenfolge sein müssenbold 1em thin, da die Entitäten zwingend erforderlich sind; das Komma, ein Literal, muss vorhanden seinbold 0.5ms, thin, da diemsWerte keine<length>sind
Doppelte Und-Verknüpfung
Das Trennen von zwei oder mehr Komponenten durch eine doppelte Und-Verknüpfung, &&, bedeutet, dass alle diese Entitäten zwingend erforderlich sind, jedoch in beliebiger Reihenfolge erscheinen können.
example =
bold &&
<length>
Dieses Beispiel passt zu den folgenden Werten:
bold 1embold 02.5cm bold3vh bold
Aber nicht zu:
bold, da beide Komponenten im Wert erscheinen müssen.bold 1em bold, da beide Komponenten nur einmal erscheinen dürfen.
Hinweis:
Die Nebeneinanderstellung hat Vorrang vor der doppelten Und-Verknüpfung, was bedeutet, dass bold thin && <length> gleichbedeutend mit [ bold thin ] && <length> ist. Es beschreibt bold thin <length> oder <length> bold thin, aber nicht bold <length> thin.
Doppelte Oder-Verknüpfung
Das Trennen von zwei oder mehr Komponenten durch eine doppelte Oder-Verknüpfung, ||, 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 Kurzschreibeigenschaft zu definieren.
example =
<number> ||
<length> ||
<color>
Dieses Beispiel passt zu den folgenden Werten:
1em 1 blueblue 1em1 1px yellow
Aber nicht zu:
blue yellow, da eine Komponente höchstens einmal erscheinen darf.bold, da es kein Schlüsselwort ist, das als Wert einer der Entitäten erlaubt ist.
Hinweis:
Die doppelte Und-Verknüpfung hat Vorrang vor der doppelten Oder-Verknüpfung, was bedeutet, dass bold || thin && <length> gleichbedeutend mit bold || [ thin && <length> ] ist. 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.
Einfache Oder-Verknüpfung
Das Trennen von zwei oder mehr Entitäten durch eine einfache Oder-Verknüpfung, |, 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.
example =
<percentage> |
<length> |
left |
center |
right |
top |
bottom
Dieses Beispiel passt zu den folgenden Werten:
3%03.5emleftcenterrighttopbottom
Aber nicht zu:
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 Oder-Verknüpfung hat Vorrang vor der einfachen Oder-Verknüpfung, was bedeutet, dass bold | thin || <length> gleichbedeutend mit bold | [ thin || <length> ] ist. 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.
Multiplikatoren für Komponentenwerte
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.
example =
bold smaller*
Dieses Beispiel passt zu den folgenden Werten:
boldbold smallerbold smaller smallerbold smaller smaller smaller, und so weiter.
Aber nicht zu:
smaller, daboldin Reihe steht und vor jedemsmallerSchlüsselwort erscheinen muss.
Pluszeichen (+)
Der Plus-Multiplikator gibt an, dass die Entität einmal 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 zu:
bold, dasmallermindestens einmal erscheinen muss.smaller, daboldin Reihe steht und vor jedemsmallerSchlü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 zu:
bold smaller smaller, dasmallerhöchstens einmal erscheinen darf.smaller, daboldin Reihe steht und vor jedemsmallerSchlüsselwort erscheinen muss.
Geschweifte Klammern ({ })
Der geschweifte Klammern Multiplikator, umschließt zwei durch ein Komma getrennte ganze Zahlen A und B und zeigt an, dass die Entität mindestens A 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 zu:
bold, dasmallermindestens einmal erscheinen muss.bold smaller smaller smaller smaller, dasmallerhöchstens dreimal erscheinen darf.smaller, daboldin Reihe steht und vor jedemsmallerSchlüsselwort erscheinen muss.
Rautenzeichen (#)
Der Rautenzeichen-Multiplikator gibt an, dass die Entität einmal oder mehrmals wiederholt werden kann (zum Beispiel der Plus-Multiplikator), aber jedes Vorkommen durch ein Komma (',') getrennt ist.
example =
bold smaller#
Dieses Beispiel passt zu den folgenden Werten:
bold smallerbold smaller, smallerbold smaller, smaller, smaller, und so weiter.
Aber nicht zu:
bold, dasmallermindestens einmal erscheinen muss.bold smaller smaller smaller, da die verschiedenen Vorkommen vonsmallerdurch Kommas getrennt sein müssen.smaller, daboldin Reihe steht und vor jedemsmallerSchlüsselwort erscheinen muss.
Das Rautenzeichen kann optional von geschweiften Klammern gefolgt werden, um anzugeben, 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 zu:
bold smaller, smaller, smaller, smaller, dasmallerhöchstens dreimal erscheinen darf.
example =
bold smaller#{2}
Dieses Beispiel passt zu dem folgenden Wert:
bold smaller, smaller
Aber nicht zu:
bold smaller, dasmallergenau zweimal erscheinen muss.
Ausrufezeichen (!)
Der Ausrufezeichen-Multiplikator nach einer Gruppe gibt an, dass die Gruppe erforderlich ist und mindestens einen Wert produzieren muss; selbst wenn die Grammatik der Elemente innerhalb der Gruppe ansonsten das Auslassen der gesamten Inhalte erlauben würde, muss mindestens ein Komponentenwert nicht weggelassen werden.
example =
[ bold? smaller? ]!
Dieses Beispiel passt zu den folgenden Werten:
boldsmallerbold smaller
Aber nicht zu:
- weder
boldnochsmaller, da eines von ihnen erscheinen muss. smaller bold, daboldin Reihe steht und vor demsmallerSchlüsselwort erscheinen muss.bold smaller bold, daboldundsmallernur einmal erscheinen dürfen.
Klammerbereichsnotation ([min,max])
Einige Typen können numerische Werte innerhalb eines bestimmten Bereichs akzeptieren. Zum Beispiel kann die Eigenschaft column-count einen ganzzahligen Wert zwischen positiv 1 und unendlich, einschließlich, akzeptieren. Die entsprechende Syntax sieht so aus:
example =
<integer [1,∞]>
Jeder Wert außerhalb dieses angegebenen Bereichs macht die gesamte Deklaration ungültig, daher ignoriert der Browser sie.
Die Klammerbereichsnotation [min, max] gibt einen inklusiven Bereich zwischen einem min- und einem max-Wert an. Diese Notation wird in numerischen Typnotationen verwendet und kann Einheiten enthalten, z.B. <angle [0,180deg]>. Positive und negative Unendlichkeit (-∞ und ∞) dürfen keine Einheiten angeben. Typen, die in Einheiten spezifiziert sind, können Nullwerte mit oder ohne Einheiten spezifiziert haben, zum Beispiel <time [0s,10s]> oder <time [0,10s]>.
Hier sind einige weitere Beispiele:
<integer [-∞,∞]>: Jeder ganze Wert von negativer Unendlichkeit bis positiver Unendlichkeit.<integer [0,∞]>: Jeder ganzzahlige Wert von 0 bis zu positiver 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,∞]>: Jeder ganzzahlige Wert außer null ist gültig.
Zusammenfassung
| Zeichen | Name | Beschreibung | Beispiel |
|---|---|---|---|
| Kombinatoren | |||
| Nebeneinanderstellung | Komponenten sind zwingend erforderlich und sollten in dieser Reihenfolge erscheinen | solid <length> |
|
&& |
Doppelte Und-Verknüpfung | Komponenten sind zwingend erforderlich, jedoch in beliebiger Reihenfolge zulässig | <length> && <string> |
|| |
Doppelte Oder-Verknüpfung | Mindestens eine der Komponenten muss vorhanden sein, und sie können in beliebiger Reihenfolge erscheinen. | <'border-image-outset'> || <'border-image-slice'> |
| |
Einfache Oder-Verknüpfung | 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 |
|
* |
Sternzeichen | 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} |
# |
Rautenzeichen | 1 oder mehrmals, wobei jedes Vorkommen durch ein Komma (,) getrennt ist |
bold smaller# |
! |
Ausrufezeichen | Gruppe muss mindestens 1 Wert produzieren | [ bold? smaller? ]! |
| Bereiche | |||
[min,max] |
Numerischer geklammerter Bereich | Gibt einen numerischen Bereich an | <integer [0,∞]> |
Spezifikationen
| Specification |
|---|
| CSS Values and Units Module Level 4> # value-defs> |
Siehe auch
- CSS-Schlüsselkonzepte: