Since July 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
The syntax descriptor of the @property at-rule defines the allowed value types for the registered CSS custom property. It controls how the property's specified value is processed to derive the computed value. It is a required descriptor; if missing or invalid, the entire @property rule is invalid and ignored.
/* A data type name */ syntax: "<color>"; /* A '|' combinator for multiple data types */ syntax: "<length> | <percentage>"; /* Space-separated list of values */ syntax: "<color>+"; /* Comma-separated list of values */ syntax: "<length>#"; /* Keywords */ syntax: "small | medium | large"; /* Combination of data type and keyword */ syntax: "<length> | auto"; /* Universal syntax value */ syntax: "*";
A string (known as the syntax string) that defines the allowed values. It can be one of the following:
<color> or <length>)auto or none)*, which accepts any valid CSS value. It cannot be multiplied or combined with other syntax components.The syntax component names can be used alone or multiplied and combined in different ways:
The + (space-separated) and # (comma-separated) multipliers indicate that a list of values is expected. For example, <color># means a comma-separated list of <color> values is the expected syntax.
The vertical line (|) combinator can create "or" conditions for the expected syntax. For example, <length> | auto accepts <length> or auto, and <color># | <integer># expects a comma-separated list of <color> values or a comma-separated list of <integer> values.
The following syntax component names are supported:
"<angle>"Accepts any valid <angle> value.
"<color>"Accepts any valid <color> value.
"<custom-ident>"Accepts any valid <custom-ident> value.
"<image>"Accepts any valid <image> value.
"<integer>"Accepts any valid <integer> value.
"<length>"Accepts any valid <length> value.
"<length-percentage>"Accepts any valid <length> or <percentage> value and any valid calc() expression combining <length> and <percentage> values.
"<number>"Accepts any valid <number> value.
"<percentage>"Accepts any valid <percentage> value.
"<resolution>"Accepts any valid <resolution> value.
"<string>"Accepts any valid <string> value.
"<time>"Accepts any valid <time> value.
"<transform-function>"Accepts any valid <transform-function> value.
"<transform-list>"Accepts a list of valid <transform-function> values. It is equivalent to "<transform-function>+".
"<url>"Accepts any valid <url> value.
| Related at-rule | @property |
|---|---|
| Initial value | n/a (required) |
| Computed value | as specified |
syntax =
<string>
This example shows how to define a custom property --my-color that allows only <color> values:
@property --my-color {
syntax: "<color>";
inherits: false;
initial-value: #c0ffee;
}
Using JavaScript CSS.registerProperty():
window.CSS.registerProperty({
name: "--my-color",
syntax: "<color>",
inherits: false,
initialValue: "#c0ffee",
});
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
syntax |
85 | 85 | 128 | 71 | 16.4 | 85 | 128 | 60 | 16.4 | 14.0 | 85 | 16.4 |
@property descriptors: inherits and initial-value
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/@property/syntax