css 动画实现从中间到两边亮度逐渐变暗的流水灯效果

先看效果:

快结束效果 随着离中心点距离逐渐边远,亮度逐渐变暗

完整的视线代码如下:

html 复制代码
<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>
相关推荐
HYI8 分钟前
「三年了,今晚突然开窍!」 一个拖拽排序的顿悟时刻
javascript·vue.js
AliciaIr12 分钟前
深入理解HTTP:从协议基础到版本演进(上)
前端·http
pepedd86415 分钟前
数组字符串方法有哪些-带你重温js基础
前端·javascript·trae
pepedd86416 分钟前
深入理解js作用域-你真的懂js吗
前端·javascript·trae
阿迪州18 分钟前
[函数式编程] 为什么要柯里化?
前端
Cache技术分享26 分钟前
162. Java Lambda 表达式 - Consumer 的链式组合
前端·后端
是晓晓吖30 分钟前
为什么在Tab中取不到content.js给window设置的变量/函数?
前端·chrome
日月晨曦32 分钟前
JS闭包:变量的"守护者"与"储物间"
前端·javascript
袁煦丞34 分钟前
轻量级网络大佬Nginx打开公网自由之路:cpolar内网穿透实验室第625个成功挑战
前端·程序员·远程工作
日月晨曦34 分钟前
TypeScript:让JavaScript穿上西装革履
前端·typescript