The CSS @property
is an outstanding operate that brings further keep watch over and flexibility to custom properties, frequently known as CSS variables.
It’s introduced as part of the CSS Houdini endeavor, which is designed to provide developers with deeper get right of entry to to the browser’s rendering engine. The @property
rule means that you can define custom properties with specific types, default values, and even the possible to animate CSS houses.
In this article, we’ll uncover what the @property
rule is, why it’s useful, and the best way you’ll be capable of leverage it to your web duties.
What’s @property
for?
CSS custom properties, frequently known as CSS variables, have made sorts further reusable. It means that you can define a value once and use it in all places your stylesheet.
However, one limitation has been the inability to specify a property’s type or set default values at once in CSS. This means any value may also be assigned to a convention property, which can lead to sudden results and make it tougher to care for your sorts in some situations.
That’s the position the @property
rule is to be had in. It means that you can set a default value, provides a fallback value that could be used if the custom property isn’t explicitly set, lets in custom property animation, and defines a type for a convention property.
This promises {{that a}} variable can very best accept a decided on knowledge type, very similar to a dimension, color, or amount.
The type of the property is printed with the syntax
property. It accepts a string value defining the CSS type value, as follows:
Sort | Description |
---|---|
<dimension> |
Any reputable <dimension> values e.g., 10px, 2em, 50%, 3rem |
<amount> |
Any reputable <amount> values e.g., 1, 0.5, -3, 100 |
<percentage> |
Any reputable <percentage> values e.g., 50%, 100%, 25% |
<length-percentage> |
Any reputable <length-percentage> values e.g., 10px, 50%, 2em, 75% |
<color> |
Any reputable <color> values e.g., #ff0000, rgb(255, 0, 0), rgba(255, 0, 0, 0.5), blue |
<image> |
Any reputable <image> values e.g., url(image.jpg), linear-gradient(to correct, pink, blue) |
<url> |
Any reputable url() values e.g., url(‘https://example.com/image.jpg’) |
<integer> |
Any reputable <integer> values e.g., 1, -10, 42 |
<point of view> |
Any reputable <point of view> values e.g., 45deg, 0.5turn, 1rad |
<time> |
Any reputable <time> values e.g., 1s, 500ms, 0.75s |
<answer> |
Any reputable <answer> values e.g., 300dpi, 2dppx |
<transform-function> |
Any reputable <transform-function> values e.g., rotate(45deg), scale(1.5), translateX(100px) |
<custom-ident> |
Any reputable <custom-ident> values e.g., –my-variable, custom-identifier |
<transform-list> |
An inventory of reputable <transform-function> values e.g., rotate(45deg) scale(1.5) translateX(100px) |
Example
Let’s say we now have now a button phase. We’d love to stipulate some defaults on this phase. Traditionally, shall we use custom properties to stipulate the background color and border radius of the button phase, like so:
.button { background-color: #fff; border-radius: 8px; }
Or, use CSS variables to stipulate the values once and reuse them in all places the stylesheet:
:root { --button-bg: #fff; --button-rounded: 8px; }
Then again, what if we want to be sure that the background color is always a sound color value, and the border radius is always a sound dimension value?
We can use the @property
rule to stipulate the type of the ones custom properties and set default values.
To do so, shall we create a couple of custom properties defined with the following alternatives inside the @property
rule:
@property --button-bg { syntax: '<color>'; initial-value: #0D74CE; inherits: false; } @property --button-rounded { syntax: '<dimension>'; initial-value: 8px; inherits: false; }
In this example, we now have now two custom properties defining the background color and border radius of the button phase.
We use the syntax
property to stipulate the type of the custom property, while the initial-value
property gadgets the default value.
We moreover use the inherits
property to specify whether or not or no longer the custom property inherits its value from its parent phase, during which case we set they all to false to avoid inheritance.
Once they’re set, we can now use the ones custom properties in our sorts, like so:
.button { background-color: var(--button-bg); border-radius: var(--button-rounded); }
See the Pen CSS @belongings by means of HONGKIAT (@hkdc)
on CodePen.
Wrapping up
The CSS @property
rule brings a very powerful step forward to CSS custom properties, or CSS variables. All number one and latest browsers already enhance the CSS @property
rule.
Browser | Desktop Style | Cell Style |
---|---|---|
Google Chrome | 85 and later | 85 and later |
Mozilla Firefox | 128 and later | No longer supported |
Safari | 15.4 and later | 15.4 and later (iOS) |
Microsoft Edge | 85 and later | 85 and later |
Opera | 71 and later | 71 and later |
Samsung Internet | 14.0 and later | 14.0 and later |
To sum up, the CSS @property
rule is an outstanding operate and an excellent addition to the CSS language that let you write further maintainable and type-safe stylesheets. For individuals who haven’t already, give it a check out to your next endeavor!
The submit Getting Began with CSS @belongings Rule appeared first on Hongkiat.
Supply: https://www.hongkiat.com/blog/css-property-rule/
Contents
0 Comments