files/en-us/web/api/css/registerproperty_static/index.md
{{APIRef("CSSOM")}}
The CSS.registerProperty() static method registers
custom properties, allowing for property type checking, default
values, and properties that do or do not inherit their value.
Registering a custom property allows you to tell the browser how the custom property should behave; what types are allowed, whether the custom property inherits its value, and what the default value of the custom property is.
CSS.registerProperty(propertyDefinition)
propertyDefinition
name
syntax {{optional_inline}}
"*".
See the {{cssxref("@property/syntax", "syntax")}}.inherits
true), or not (false). Defaults to false.initialValue {{optional_inline}}
undefined.
InvalidModificationError {{domxref("DOMException")}}
name has already been registered.SyntaxError {{domxref("DOMException")}}
name isn't a valid custom property name (starts with two
dashes, e.g., --foo).name and/or inherits dictionary members were
not provided.The following will register a custom property,
--my-color, using registerProperty(), as a color, give it a
default value, and have it not inherit its value:
window.CSS.registerProperty({
name: "--my-color",
syntax: "<color>",
inherits: false,
initialValue: "#c0ffee",
});
In this example, the custom property --my-color has been registered using
the syntax <color>. We can now use that property to transition a
gradient on hover or focus. Notice that with the registered property, the transition
works, but it doesn't work with the unregistered property!
.registered {
--my-color: #c0ffee;
background-image: linear-gradient(to right, white, var(--my-color));
transition: --my-color 1s ease-in-out;
}
.registered:hover,
.registered:focus {
--my-color: #b4d455;
}
.unregistered {
--unregistered: #c0ffee;
background-image: linear-gradient(to right, white, var(--unregistered));
transition: --unregistered 1s ease-in-out;
}
.unregistered:hover,
.unregistered:focus {
--unregistered: #b4d455;
}
button {
font-size: 3vw;
}
We can add these styles to some buttons:
<button class="registered">Background Registered</button>
<button class="unregistered">Background Not Registered</button>
{{EmbedLiveSample("Examples", 320, 320)}}
{{Specifications}}
{{Compat}}