Tworzymy animację płynnego podkreślenia podczas hoveru myszki. Pracujemy na kodzie z poprzedniego przykładu, gdzie omawialiśmy sobie właściwość text-shadow. Do dzieła!

Nasz kod:

<style>
        h1 {
            transition: all .5s;
            color: #1e293b;
            text-shadow: 1px 1px 1px rgba(30,41,59, 0.2);
            font-family: Tahoma, sans-serif;
        }
       
        h1:hover {
            color:#ef4444;
            text-shadow: 2px 2px 2px rgba(239,68,68, 0.3);
        }
</style>
(...)
<h1>MY HEADING</h1>

Zamieniamy treść headingu na element a:

<h1><a href="#">MY HEADING</a></h1>

Nasz link musi mieć position relative oraz overflow hidden – a także reset stylów linkowych:

 h1 a {
  position: relative;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
}

Teraz za pomocą pseudoelementu before tworzymy linię pod tekstem:

h1 a::before {
content: '';
display: inline-block;
position: absolute;
width: 100%;
height: 2px;
left: 0;
bottom: 0;
background-color: rgba(14, 116, 144, 0.65);
box-shadow: 0 6px 12px 0px rgba(14,116,144, 0.3);
transition: all .5s;
  }

Przesuwamy linię w lewo (overflow mamy hidden, więc to nie problem):

h1 a::before {
(...)
transform: translateX(-100%);
}

Dla pewności h1 też nadajemy overflow na hidden. Następnie wysuwamy naszą linię na hoverze:

h1:hover a::before {
transform: translateX(0);
}

Już. Działa.