This content originally appeared on Manuel Matuzović - Blog and was authored by Manuel Matuzović
As already explained on day 84, using the syntax descriptor, you can define the type of a custom property in an @property at-rule.
@property --lh {
syntax: '<number>';
inherits: false;
initial-value: 1;
}
button {
--lh: 1;
line-height: var(--lh);
transition: --lh 1s;
width: min-content;
}
button:is(:focus-visible,:hover) {
--lh: 2;
}
That works well, but some properties, like line-height, support different types of values.
If you use a length instead of a number, the transition doesn't work anymore because the provided value of the custom property must be valid as defined in the syntax descriptor.
@property --lh {
syntax: '<number>';
inherits: false;
initial-value: 1;
}
button {
--lh: 16px;
line-height: var(--lh);
transition: --lh 1s;
width: min-content;
}
button:is(:focus-visible,:hover) {
--lh: 32px;
}
The good news is you can define multiple syntax component names using the '|' Combinator
@property --lh {
syntax: '<number> | <length-percentage>';
inherits: false;
initial-value: 1;
}
button {
--lh: 16px;
line-height: var(--lh);
transition: --lh 1s;
width: min-content;
}
button:is(:focus-visible,:hover) {
--lh: 32px;
}
My blog doesn't support comments yet, but you can reply via blog@matuzo.at.
This content originally appeared on Manuel Matuzović - Blog and was authored by Manuel Matuzović
Manuel Matuzović | Sciencx (2023-11-10T00:00:00+00:00) Day 105: defining multiple syntax components. Retrieved from https://www.scien.cx/2023/11/10/day-105-defining-multiple-syntax-components/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.