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>
相关推荐
放逐者-保持本心,方可放逐6 分钟前
vue.config.js 简介 及 实例
前端·javascript·vue.js
落日弥漫的橘_36 分钟前
js 数组方法总结
前端·javascript
tester Jeffky42 分钟前
深入理解NPM:Node.js的包管理器
javascript·npm·node.js
余生H1 小时前
前端的Python入门指南(完):错误和异常处理策略及最佳实践
开发语言·前端·javascript·python
你的牧游哥1 小时前
Mac上使用ln指令创建软链接、硬链接
开发语言·前端·javascript
小兔崽子去哪了1 小时前
海康摄像头 web 对接
前端·vue.js·html
&活在当下&1 小时前
Element plus 下拉框组件选中一个选项后显示的是 value 而不是 label
前端·javascript·vue3·element plus
zzy_juheng1 小时前
弹出框(Dialog)简易使用指南
前端
Hilaku1 小时前
手写 Proxy API:从基础到实战
前端
Hilaku1 小时前
JavaScript 与 Whisper:探索语音识别与自然语言处理的结合
前端