Fun with CSS variables and Tailwind
Version 3 of Tailwind includes a plethora of new and awesome features. One of them is the ability to use arbitrary values and properties in your utility classes – this even works with CSS variables! Here's the example we're going to build today:

The top and bottom lines should grow from 0% to 100% width when you hover over the button. Let's start with the basic html for this component:
<button class="relative">
<span class="absolute left-0 w-full h-1 bg-green-500 transition-all"></span>
<div class="p-4">HOVER ME</div>
<span class="absolute right-0 w-full h-1 bg-green-500 transition-all"></span>
</button>
So far so good. Next, let's use Tailwind's new bracket syntax to define and use a CSS variable called --fill that represents the width of the lines. To do that, add [--fill:0%] to the button element and replace w-full with w-[var(--fill)] in both span elements.
The final piece of the puzzle is updating the variable on hover. Tailwind makes this easy, just add hover:[--fill:100%] to the button element and you're done.
And here's the final result:
Pretty neat! I'm looking forward to exploring this technique more in the future. Let me know in the comments if you stumble across other use cases.
About the author
Hi, my name is Simon, I'm a full stack developer from Switzerland.
Comments
Join the discussionNo comments yet. Be the first to comment.

