Technology News

Interpolating Numeric CSS Variables

We can make variables in CSS pretty easily:

:root { --scale: 1;
}

And we can declare them on any element:

.thing { transform: scale(var(--scale));
}

Even better for an example like this is applying the variable on a user interaction, say :hover:

:root { --scale: 1;
} .thing { height: 100px; transform: scale(var(--scale)); width: 100px;
} .thing:hover { --scale: 3;
}

But if we wanted to use that variable in an animation… nada.

:root { --scale: 1;
} @keyframes scale { from { --scale: 0; } to { --scale: 3; }
} /* Nope! */
.thing { animation: scale .25s ease-in; height: 100px; width: 100px;
}

That’s because the variable is recognized as a string and what we need is a number that can be interpolated between two numeric values. That’s where we can call on @property to not only register the variable as a custom property, but define its syntax as a number:

@property --scale { syntax: "<number>"; initial-value: 1; inherits: true;
}

Now we get the animation!

You’re going to want to check browser support since @property has only landed in Chrome (starting in version 85) as of this writing. And if you’re hoping to sniff it out with @supports, we’re currently out of luck because it doesn’t accept at-rules as values… yet. That will change once at-rule()becomes a real thing.

UI design inspiration: Top 5 illustrations trends in 2023 designers should know
WEP Nxt – An Initiative to Nurture Women Entrepreneurship in India

Related Articles

Why Tesla won’t stop

why-tesla-wont-stop
Tesla announced two massive recalls this week related to issues with its vehicles’ software. One of the recalls ordered Tesla to roll back a self-driving feature that caused the company’s…

The M3 Max MacBook Pro Blew My Mind…

The M3 Max MacBook Pro Blew My Mind...
The 16″ M3 Max MacBook Pro is an impressive piece of technology bringing more power, cores, and new technology into the mix. That being said, how does it stack up…