css 如何设置文本渐变颜色的动画效果,使其始终沿一个方向移动

nqwrtyyt  于 2023-01-18  发布在  其他
关注(0)|答案(3)|浏览(144)

我有一个文本是黑色的,悬停时渐变从左向右移动。但是悬停后,渐变又回到了左。我想让它向右移动。我该怎么做呢?
这是我目前使用的示例代码

.gradlr {
  color: #0000;
  background: linear-gradient(90deg, #314199, #54c0c7 50%, #000 0)
    var(--_p, 100%) / 200% no-repeat;
  -webkit-background-clip: text;
  background-clip: text;
  transition: 0.4s ease-out;
}
.gradlr:hover {
  --_p: 0%;
}
<h1 class="gradlr">Test</h1>
x8diyxa7

x8diyxa71#

这不能用过渡来实现,因为它们只能在两个简单的状态之间变形。要实现这种连续的效果,你需要使用CSS动画。
您可以定义一个关键帧动画,其中包括0%的起始点、50%的结束点,然后在100%处进行过冲,以进一步向左移动渐变,再次到达起始点。此时动画将从0%处重新开始,看起来像是向左的无限动画。
这里有一篇文章可以作为入门:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Animations/Using_CSS_animations

mbyulnm0

mbyulnm02#

这就是你想要的吗?
您可以使用to left作为linear-gradient的第一个参数:

.gradlr {
  color: #0000;
  background: linear-gradient(to left, #314199, #54c0c7 50%, #000 0)
    var(--_p, 100%) / 200% no-repeat;
  -webkit-background-clip: text;
  background-clip: text;
  transition: 0.4s ease-out;
}
.gradlr:hover {
  --_p: 0%;
}
<h1 class="gradlr">Test</h1>
6gpjuf90

6gpjuf903#

我在hover中更新,请检查并告诉我,如果这是你想要的?

.gradlr {
  color: #0000;
  background: linear-gradient(90deg, #314199, #54c0c7 50%, #000 0)
    var(--_p, 100%) / 200% no-repeat;
  -webkit-background-clip: text;
  background-clip: text;
  transition: 0.4s ease-out;
}
.gradlr:hover {
  --_p: 85%;
}
<h1 class="gradlr">Test</h1>

相关问题