Угу, не работает transition с линейным градиентом.
И JS тут совсершенно не при чем %) Делается небольшим костылем на CSS.
Самое простое, использовать блок с абсолютным позиционированием.
https://jsfiddle.net/webirus/0sn1fwet/
Я сделал через псевдоэлемент, так как у меня не заполнен контент.
В случае, если контент есть, просто делайте отдельный див.