最近看到百度首页有一个文字流光的效果,挺有意思的,在项目中可以找一个让人"眼前一黑"的地方加上这个效果。

保准让人"眼前一黑"。哈哈,效果虽然很简单,但是颇有零几年网页的"赶脚"~
html
<template>
<div class="shine-font-container">
<div
class="shine-font"
:style="{
backgroundImage: gradientStyle,
animationDuration: animationDuration + 's',
animationIterationCount: isAnimationLoop ? 'infinite' : 1
}"
>
{{ text }}
</div>
</div>
</template>
<script>
export default {
name: 'ShineFont',
props: {
text: {
type: String,
default: '默认文本'
},
gradientColor: {
type: Array,
default: () => ['#ff1E0033', '#ff1e00', '#335bff', '#335BFF33']
},
animationDuration: {
type: Number,
default: 5
},
isAnimationLoop: {
type: Boolean,
default: true
}
},
computed: {
gradientStyle() {
return `linear-gradient(90deg, ${this.gradientColor.join(', ')})`;
}
}
}
</script>
<style scoped>
.shine-font-container .shine-font {
background-size: 120% 100%;
background-position: -753em 0;
background-repeat: no-repeat;
animation: shine 1s linear;
font-size: 16px;
font-weight: 400;
line-height: 25px;
height: 24px;
letter-spacing: .06em;
text-align: left;
background: #000;
color: transparent;
background-clip: text;
-webkit-background-clip: text;
display: flex;
}
@keyframes shine {
0% {
background-position: -150px 0;
}
100% {
background-position: 150px 0;
}
}
</style>
其实效果比较简单,就是给背景一个渐变色,给文字一个透明色。
通过背景不断地挪动位置实现文字"流光"的效果。