先看效果:
快结束效果 随着离中心点距离逐渐边远,亮度逐渐变暗
完整的视线代码如下:
< template>
< div class = " container" >
< div class = " runner bottom to-right" > </ div>
< div class = " runner bottom to-left" > </ div>
</ div>
</ template>
< script setup >
</ script>
< style lang = " less" >
html, body {
height : 100%;
background-color : black;
}
.container {
position : relative;
height : 80px;
.runner {
--title-back-linear-2 : linear-gradient (
to right, // 从左到右的现线性渐变
transparent 0%, // 完全透明
rgba ( 255, 255, 255, 1) 50%,
transparent 100% // 完全不透明
) ;
--title-back-linear-3 : linear-gradient (
to right,
transparent -50%,
rgba ( 255, 255, 255, 1) 50%,
transparent 150%
) ;
position : absolute;
&.bottom {
bottom : 4px;
left : calc ( 50% - 20px) ;
//left : 50%;
}
width : 40px;
height : 2px;
background : var ( --title-back-linear-2) ; // 把这行注释了会看到不是一条线了,而是一个点
box-shadow : 5px 5px 10px rgba ( 255, 255, 255, 0.4) ,
-5px 5px 10px rgba ( 255, 255, 255, 0.4) ,
5px -5px 10px rgba ( 255, 255, 255, 0.4) ,
-5px -5px 10px rgba ( 255, 255, 255, 0.4) , //; // 感觉把下边这四个注释了也没多大差别
5px 5px 30px rgba ( 255, 255, 255, 0.4) ,
-5px 5px 30px rgba ( 255, 255, 255, 0.4) ,
5px -5px 30px rgba ( 255, 255, 255, 0.4) ,
-5px -5px 30px rgba ( 255, 255, 255, 0.4) ;
&::after { // 起个加强亮度的作用吧
content : '' ;
position : absolute;
display : block;
width : 10px;
height : 1px;
bottom : 0;
left : calc ( 50% - 5px) ;
background : var ( --title-back-linear-3) ;
box-shadow : 5px 5px 10px rgba ( 255, 255, 255, 0.4) ,
-5px 5px 10px rgba ( 255, 255, 255, 0.4) ,
5px -5px 10px rgba ( 255, 255, 255, 0.4) ,
-5px -5px 10px rgba ( 255, 255, 255, 0.4) ,
5px 5px 30px rgba ( 255, 255, 255, 0.4) ,
-5px 5px 30px rgba ( 255, 255, 255, 0.4) ,
5px -5px 30px rgba ( 255, 255, 255, 0.4) ,
-5px -5px 30px rgba ( 255, 255, 255, 0.4) ;
}
// ~ 4 动画
&.to-right {
animation : toRight 5s ease infinite ; // normal可以不用写,写alternate会反向动画
}
&.to-left {
animation : toLeft 5s ease infinite normal;
}
}
@keyframes toLeft {
0% {
left : calc ( 50% - 20px) ;
opacity : 1;
}
100% {
left : 0;
opacity : 0;
}
}
@keyframes toRight {
0% {
left : calc ( 50% - 20px) ;
opacity : 1;
}
100% {
left : calc ( 100% - 40px) ;
opacity : 0;
}
}
}
</ style>