文字渐变动画,可以实现的有两种:一种是一行文字整体变化颜色;另一种一行文字依次变化颜色。接下来,我就介绍一下这两种文字渐变的实现过程。
布局代码:
<div class="con">
<div class="animated-text">Hello World</div>
</div>
<div class="con">
<div class="flow">Hello World</div>
</div>
为了呈现的效果好看些,我把两个渐变文字分别放置到两个容器中。实际请仅关注 下面代码:
<div class="">Hello World</div>
当然为了美观,我把关于文字大小和对齐的样式也写在了 con 这个容器里。贴一下CSS代码:
.con{
display: flex;
height: 300px;
border-radius: 10px;
background: #eaeaea;
color: #333;
font-size: 64px;
font-weight: 700;
padding: 20px;
box-sizing: border-box;
align-items: center; /* 垂直居中 */
justify-content: center; /* 水平居中 */
flex: 1;
margin:20px;
flex-basis: 45%;
margin-bottom: 10px;
text-shadow: 0 0 10px rgba(0, 0, 0, .3);
}
两个动画的实现方法
第一种:一行文字整体变化颜色
先贴代码,再解释:
/* 定义文字渐变色动画 */
@keyframes text-color-change {
0% {
color: #ff3334; /* 动画开始时的颜色 */
}
20% {
color: #ffcf00; /* 动画中间时的颜色 */
}
40% {
color: #66ccff; /* 动画中间时的颜色 */
}
60% {
color: #ff3399; /* 动画中间时的颜色 */
}
80% {
color: #9933ff; /* 动画中间时的颜色 */
}
100% {
color: #19e713; /* 动画结束时的颜色 */
}
}
/* 应用动画到元素 */
.animated-text {
animation: text-color-change 2s infinite alternate; /* 动画名称,持续时间,循环次数,方向 */
}
思路:这段代码定义了一个名为 text-color-change的关键帧动画,它会在五个颜色间进行变化。然后,.animated-text类使用这个动画,并设置了动画的持续时间、循环方式和是否反向播放。这样,当应用到HTML元素上时,该元素的文本颜色将会持续变化。
第二种:一行文字依次变化颜色
先贴代码,再解释:
.flow {
height: 120px;
background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, purple);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: hue 3s linear infinite;
padding: 20px;
}
@keyframes hue {
0% {
filter: hue-rotate(0deg);
}
100% {
filter: hue-rotate(360deg);
}
}
思路:这段代码定义了一个名为 hue 的动画,该动画将应用一个色彩旋转效果。通过 @keyframes 定义的 hue-rotate动画会从0deg旋转到360deg,形成一个完整的色环。动画的持续时间是3秒,并且设置为无限次循环(infinite),每次动画都会交替反向播放(alternate)。