我已经对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%
}
}
最佳答案
问题在于,您正在尝试将动画与变换结合起来,这将无法像您期望的那样发挥作用.通过添加转换,您不会使动画流畅.换句话说,您无法将动画添加到动画中.
由于您在悬停时将动画的持续时间设置为15秒,因此我认为在这种情况下不需要无限,因为没有人会继续悬停超过15秒,因此您可以将其更改为过渡并且它将是平滑的.
我已经将渐变状态添加到渐变中以获得初始状态,然后转换我们可以执行初始动画的一半,最后您将拥有7s持续时间,这对于悬停效果来说已经足够了:
h1 {
transition: 7s;
background:
linear-gradient(-45deg,#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%;
}