@mixin radial-gradient-animation( $fallback, $start, $end, $transTime ){ background-size: 100%; position: relative; z-index: 100; &:before { background: $fallback; background: radial-gradient($start, $end); content: ''; display: block; height: 100%; position: absolute; top: 0; left: 0; opacity: 0; width: 100%; z-index: -100; transition: opacity $transTime; } &:hover { &:before { opacity: 1; } } } @mixin linear-gradient-animation( $fallback, $direction, $start, $middle, $end, $transTime ){ background-size: 100%; position: relative; z-index: 100; &:before { background: $fallback; background: linear-gradient($direction, $start, $middle, $end); content: ''; display: block; height: 100%; position: absolute; top: 0; left: 0; opacity: 0; width: 100%; z-index: -100; transition: opacity $transTime; } &:hover { &:before { opacity: 1; } } }