我已经在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%
}
}
<h1>The Title</h1>
答案 0 :(得分: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%;
}
<h1>The Title</h1>
答案 1 :(得分:1)
在处理过渡时,需要设置要更改的元素属性的初始状态。
h1 {
background: black;
-webkit-background-clip: text;
background-clip: text;
}
我还发现了与您的效果相同的有趣示例。 https://codepen.io/anthony-liddle/pen/uFoxA