Delay your CSS animations to make them cleaner

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
Search for a command to run...

I'm a full-stack developer from South Africa 🇿🇦. I love writing about JavaScript, HTML and CSS.
I was trying to fix something and had almost forgotten about the transition-delay. 😬 You saved me from writing a ton of JS. 🙌
Awesome, happy it came in handy and on the right time
Most of you know me for my consistency, a golden arrow in my blog series. I've written 1000 articles in 1008 days! Almost an article a day, and my honeymoon was the only holiday I ever took. I'm super proud of this achievement; it has been a fantasti...

It's not the first time I'll be talking about community. I think it's an essential aspect of any successful tool. This shows in my previous explorations of Astro, Medusa, and now Vendure as well. All these products thrive in a super open, welcoming, ...

The cool part about Vendure is how easy it is to set up and how abstract each layer is. Basically, we get the following elements: External database Server Worker Admin UI Frontend While this is amazing, it also brings a bit of complexity when it co...

The previous article looked at customizing Vendure on a data and process level. In this article, we'll look at customizing emails, as they are often a big part of a webshop system. We'll be looking at two different layers of customization for customi...

Even though Vendure is a pretty significant project out of the box, in some cases, we might want to go in and modify some elements to work to our specific use case. In this article, I'll take a high-level look at some elements we can customize within...

CSS animations are amazing, I often use them, but recently I learned it's a good practice to add a small delay, so they don't flicker if the user accidentally hovers it.
To demonstrate what I mean by that, check what's happening here:

Pretty annoying, this one isn't the worse, but it might become super annoying if you add some more transitions.
So how can we fix this?
In general, for our above example, we use the following CSS.
button {
background: #6d597a;
transition: background 0.2s ease-in-out;
}
button:hover {
background: #b56576;
}
Fair enough, right? It animates the background in 0.2 seconds from our initial color to the new color.
However, this gives us that annoying flickering effect if we hover it too quickly.
The solution is quite simple. We can add a so-called animation-delay
It comes as the 1st of the timing options:
transition: background 0.2s 0.1s ease-in-out;
In my case, the second time parameter (0.1) is the delay.
It adds an animation-delay: 0.1s. This is the time our animation won't start working.

Above, you can see the fix in action. Pretty cool, right?
Try it out on this Codepen.
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter