Единственное что не получилось в этом коде, чтобы цвет самого текста менялся, если есть мысли - подскажите. Вот полный рабочий код CSS (без цвета текста)
.fun-hover {
background-image: linear-gradient(to bottom, transparent 100%, #18BC9C 100%);
background-position: 150;
background-size:200%;
-webkit-transition: all 0.4s;
transition: all 0.4s;
}
.fun-hover:hover {
background-position: -100%;
background-image: linear-gradient(to bottom, transparent 0%, #18BC9C 80%);
}