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>
相关推荐
禅思院25 分钟前
前端部署“三层漏斗”完全指南:从CI/CD到自动回滚的工程化实战【开题】
前端·架构·前端框架
快乐肚皮1 小时前
深入理解Loop Engineering
前端·后端
半个落月1 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
风骏时光牛马1 小时前
VHDL十大经典基础功能设计实例代码合集
前端
小兔崽子去哪了1 小时前
Vue3 + Pinia 集成 IGV.js 实现 BAM 文件在线浏览
javascript·vue.js·后端
hunterandroid2 小时前
Notification 通知:从基础到渠道适配
前端
孟陬2 小时前
Claude Code 巧思 `Ctrl+S` 暂存键
前端·后端
PedroQue992 小时前
V1.6.1性能优化:高频路径提速与代码精简
前端·uni-app
猩猩程序员2 小时前
将 LiteLLM 迁移到 Rust —— 构建最快、最轻量的 AI Gateway
前端
小月土星2 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试