files/en-us/web/css/reference/at-rules/@property/syntax/index.md
The syntax descriptor of the {{cssxref("@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>"
"<color>"
"<custom-ident>"
"<image>"
"<integer>"
"<length>"
"<length-percentage>"
<length> and <percentage> values."<number>"
"<percentage>"
"<resolution>"
"<string>"
"<time>"
"<transform-function>"
"<transform-list>"
"<transform-function>+"."<url>"
{{cssinfo}}
{{csssyntax}}
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 {{domxref('CSS.registerProperty_static', 'CSS.registerProperty()')}}:
window.CSS.registerProperty({
name: "--my-color",
syntax: "<color>",
inherits: false,
initialValue: "#c0ffee",
});
{{Specifications}}
{{Compat}}