Dev & Design Meetup #16
November 20, 2025
Freelancer doing Web-Technology-Stuff.
| Data Type | Example Units | Example Declarations |
|---|---|---|
<length>
|
px, vw, cqi, em, ch
|
width: 200px;font-size: 3em; |
<angle>
|
deg, rad, turn
|
color: hsl(150deg 30% 60%);transform: rotate(0.75turn); |
<time>
|
ms, s
|
animation-duration: 1s;transition-delay: 250ms; |
<number>
|
unitless |
opacity: 0.5;scale: 2; |
/* assumption: viewport width of 500px */
calc(100vw / 2) = 250px
calc(100vw / 2px) = 250
/* assumption: em = 16px (browser default) */
calc(100vw / 1em) = 31.25
calc(100vw / 200ms) /* ?!? */
calc(100 / 2px) /* ?!? */
div {
/* measure a <length> value */
--length: clamp(300px, 100cqw, 700px);
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc((var(--length) - 300px) / 400px);
/* calculate an <angle> value */
--angle: calc(360deg * var(--factor));
/* use the <angle> value for rotation */
rotate: var(--angle);
}
div {
/* measure a <length> value */
--length: clamp(300px, 100cqw, 700px);
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc((var(--length) - 300px) / 400px);
/* calculate an <angle> value used for <hue> */
--hue: calc(360deg * var(--factor));
/* compose a <color> value */
background-color: hsl(var(--hue) 100% 50%);
}
div {
/* measure a <length> value */
--length: clamp(300px, 100cqw, 700px);
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc((var(--length) - 300px) / 400px);
/* calculate a <time> value */
--time: calc(500ms + var(--factor) * 2000ms);
/* use the <time> value for an animation */
animation-duration: var(--time);
}
div {
/* measure a <length> value */
--length: clamp(300px, 100cqw, 700px);
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc((var(--length) - 300px) / 400px);
/* use the <number> value for opacity */
opacity: var(--factor);
}
div {
/* measure a <length> value */
--length: clamp(300px, 100cqw, 700px);
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc((var(--length) - 300px) / 400px);
/* use the <number> value for scale */
scale: var(--factor);
}
/* define an <angle> value */
@property --angle {
syntax: "<angle>";
initial-value: 360deg;
}
/* change the <angle> value with an animation */
@keyframes rotate {
0% { --angle: 360deg }
100% { --angle: 0deg }
}
div {
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc(1 - (var(--angle) / 360deg));
/* calculate a <length> value */
--length: calc(200px + 200px * var(--factor));
/* use the <length> value for width */
width: var(--length);
}
/* define an <angle> value */
@property --angle {
syntax: "<angle>";
initial-value: 360deg;
}
/* change the <angle> value with an animation */
@keyframes rotate {
0% { --angle: 360deg }
100% { --angle: 0deg }
}
div {
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc(1 - (var(--angle) / 360deg));
/* calculate another <number> value
used for "blue" in rgb() */
--blue: calc(255 * var(--factor));
/* use the value for rgb() */
background-color: rgb(0, 0, var(--blue));
}
/* define an <angle> value */
@property --angle {
syntax: "<angle>";
initial-value: 360deg;
}
/* change the <angle> value with an animation */
@keyframes rotate {
0% { --angle: 360deg }
100% { --angle: 0deg }
}
div {
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc(1 - (var(--angle) / 360deg));
/* use the <number> value for opacity */
opacity: var(--factor);
}
/* define an <angle> value */
@property --angle {
syntax: "<angle>";
initial-value: 360deg;
}
/* change the <angle> value with an animation */
@keyframes rotate {
0% { --angle: 360deg }
100% { --angle: 0deg }
}
div {
/* calculate a unitless <number> value
between 0 and 1 */
--factor: calc(1 - (var(--angle) / 360deg));
/* use the <number> value for scale */
scale: var(--factor);
}
https://claes.tech
alex@claes.tech
https://www.linkedin.com/in/alexander-claes/
https://claes.tech/connect/dev-design