CSS文本背景悬停效果在mouseout上表现奇怪

Ada*_*obo 5 css linear-gradients css3 css-animations

我已经对h1元素实现了悬停效果(请参阅下面的代码和笔),但是在返回到原始状态之前,效果在鼠标移出时会出现奇怪的行为并且会出现闪烁.

任何想法如何使其转换回原始颜色,就像它在悬停时淡入一样平滑?

提前致谢.

https://codepen.io/lobodemon/pen/YOXKNJ

h1 {
  transition: 0.5s;
}

h1:hover {
  background: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);
  background-size: 400% 400%;
  color:transparent;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-animation: Gradient 15s ease infinite;
  -moz-animation: Gradient 15s ease infinite;
  animation: Gradient 15s ease infinite;
}

@-webkit-keyframes Gradient {
    0%, 100% {
        background-position: 0 50%
    }
    50% {
        background-position: 100% 50%
    }
}

@-moz-keyframes Gradient {
    0%, 100% {
        background-position: 0 50%
    }
    50% {
        background-position: 100% 50%
    }
}

@keyframes Gradient {
    0%, 100% {
        background-position: 0 50%
    }
    50% {
        background-position: 100% 50%
    }
}
Run Code Online (Sandbox Code Playgroud)
<h1>The Title</h1>
Run Code Online (Sandbox Code Playgroud)

Tem*_*fif 2

问题是您正在尝试将动画与转换结合起来,但这不会像您期望的那样工作。通过添加过渡不会使动画变得流畅。换句话说,您无法向动画添加过渡。

由于您将动画的持续时间设置为15s悬停,我认为在这种情况下不需要无限,因为没有人会继续悬停超过15s,因此您可以将其更改为过渡,并且它会很平滑。

我已将黑色添加到渐变中以获得初始状态,然后通过过渡我们可以完成初始动画的一半,最后您将获得一段7s足以实现悬停效果的持续时间:

h1 {
  transition: 7s;
  background: 
    linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB,#000);
  background-size: 400% 400%;
  color:transparent;
  -webkit-background-clip: text;
  background-clip: text;
  background-position: 0 0;
}

h1:hover {
  background-position: 100% 50%;
  
}
Run Code Online (Sandbox Code Playgroud)
<h1>The Title</h1>
Run Code Online (Sandbox Code Playgroud)