Фоновые градиенты не могут быть анимированы, но вы можете взломать их, затеняя в другом элементе (псевдоэлементе ::before
в данном случае), который перекрывает фон.
Вот общий пример HTML + CSS, который выможно легко адаптировать к вашему коду:
.box {
width: 100px;
height: 100px;
background: linear-gradient(to top, blue, yellow);
position: relative;
z-index: 0;
}
.box::before {
content: '';
position: absolute;
z-index: -1;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: red;
opacity: 0;
transition: opacity 0.2s linear;
}
.box:hover::before {
opacity: 1;
}
<div class="box">Some text</div>