Video Tutorial Underline effect
In this tutorial I propose to discover how to create an animated underline effect in CSS.
First approach: pseudo-element
The first approach is to use a pseudo element and animate the property transform
to change the value scaleX ()
.
at {
position: relative;
}
a :: after {
happy: '';
transform-origin: 0 0;
transform: scaleX (0);
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: .4em;
background: # 78ab4e;
z-index: -1;
opacity: 0.8;
transition: transform .3s;
}
a: hover :: after {
transform: scaleX (1);
}
Which gives the rendering that one seeks to obtain.
On the other hand, this does not make it possible to manage the case of a multiline text since the pseudo element will be placed with respect to the box composed by the last line:
Approach via a background
Another solution is to use the property background
via a linear gradient to create only one border. Then just animate the background-size
to create the progressive underline effect.
at {
text-decoration: none;
background: linear-gradient (to top, rgba (255, 0, 0, 0.5) 0%, rgba (255, 0, 0, 0.5) 10%, transparent 10.01%) no-repeat left bottom / 0 100%;
transition: background-size .5s;
}
a: hover {
background-size: 100% 100%;
}