CSS @property Rule
- Previous Page CSS Variables - Media Queries
- Next Page CSS Box Sizing
CSS @property Rule
@property
Rules are used to define custom CSS properties directly in the style sheet without running any JavaScript.
@property
Rules have data type checking and constraints, set default values, and define whether the property can inherit values.
Define an instance of custom properties:
@property --myColor { syntax: "<color>"; inherits: true; initial-value: lightgray; }
The above definition indicates --myColor
It is a color property that can inherit the value of the parent element, with a default value of lightgray.
To use custom properties in CSS, we use var()
Function:
body { background-color: var(--myColor); }
Usage @property
The benefits:
- Type checking:Het is vereist om het datatype van de aangepaste eigenschap te specificeren, zoals <number>、<color>、<length>. Dit voorkomt fouten en zorgt ervoor dat aangepaste eigenschappen correct worden gebruikt.
- Instellen van standaardwaarden:U kunt een standaardwaarde instellen voor aangepaste eigenschappen. Dit zorgt ervoor dat de browser de gedefinieerde alternatieve waarde gebruikt als een ongeldig waarde wordt toegewezen.
- Instellen van het overnemen van gedrag:Het is vereist om aan te geven of een aangepaste eigenschap de waarde van zijn ouder-element kan overnemen.
Browserondersteuning
De cijfers in de tabel geven de eerste browserversie aan die de regel volledig ondersteunt.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
85 | 85 | 128 | 16.4 | 71 |
Een eenvoudige @property-instantie
In het volgende voorbeeld worden twee aangepaste eigenschappen gedefinieerd:--my-bg-color
en --my-txt-colo
r. Vervolgens zal de div in background-color
en color
in het gebruik van aangepaste eigenschappen:
Example
@property --my-bg-color { syntax: "<color>"; inherits: true; initial-value: lightgray; } @property --my-txt-color { syntax: "<color>"; inherits: true; initial-value: darkblue; } div { width: 300px; height: 150px; padding: 15px; background-color: var(--my-bg-color); color: var(--my-txt-color); }
een andere @property-instantie
In het volgende voorbeeld gebruiken we de standaard aangepaste eigenschappen op het <div>-element. Vervolgens gebruiken we .fresh
en .nature
Klasse-eigenschappen overschrijven (door een andere kleur in te stellen), het effect is erg goed:
Example
@property --my-bg-color { syntax: "<color>"; inherits: true; initial-value: lightgray; } div { width: 300px; height: 150px; padding: 15px; background-color: var(--my-bg-color); } .fresh { --my-bg-color: #ff6347; } .nature { --my-bg-color: rgb(120, 180, 30); }
door typecontrole en alternatieve waarden fouten te voorkomen
In het volgende voorbeeld zullen we .nature
De aangepaste eigenschappen in de klasse zijn ingesteld op een integer. Dit is ongeldig, de browser zal de waarde gebruiken in initial-value
Alternatieve kleuren die in de eigenschap worden gedefinieerd (lightgray):
Example
@property --my-bg-color { syntax: "<color>"; inherits: true; initial-value: lightgray; } div { width: 300px; height: 150px; padding: 15px; background-color: var(--my-bg-color); } .fresh { --my-bg-color: #ff6347; } .nature { --my-bg-color: 2; }
de waarde van inherits gebruiken
In het volgende voorbeeld zullen we inherits
De waarde wordt ingesteld op false
Dit betekent dat aangepaste eigenschappen de waarde van hun ouder-element niet overnemen. Bekijk het resultaat:
Example
@property --my-bg-color { syntax: "<color>"; inherits: false; initial-value: lightgray; }
De volgende voorbeeld zal inherits
De waarde wordt ingesteld op true
Dit betekent dat aangepaste eigenschappen de waarde van hun ouder-element overnemen. Bekijk het resultaat:
Example
@property --my-bg-color { syntax: "<color>"; inherits: true; initial-value: lightgray; }
Use @property to create smooth animations
Usage @property
The new opportunities that can be realized by rules are to animate content that was previously un animatable: gradients. See the following example:
Example
Specify two custom properties for gradients:
@property --startColor { syntax: "<color>"; initial-value: #EADEDB; inherits: false; } @property --endColor { syntax: "<color>"; initial-value: #BC70A4; inherits: false; }
CSS @property Rule
Property | Description |
---|---|
@property | Define custom CSS properties directly in the stylesheet without running any JavaScript. |
- Previous Page CSS Variables - Media Queries
- Next Page CSS Box Sizing