使用css 动画实现,水波纹的效果

2023-11-20

每日鸡汤:每个你想要学习的瞬间都是未来的你向自己求救

需求,实现水波纹动画效果,要求中心一个圆点,然后有3个圈,一圈一圈的向里面缩小。

说实话我第一个想到了给3个圈设置不同的宽高,然后设置动画0-100%,一次缩小宽高!

但是,我转念一想,我是不是也可以用padding设置,就是给每个圈设定一个padding, 逐渐缩小padding, 貌似也能达到相同的效果。 确实可以,但是无论用哪种方法,要想让动画变得顺滑,就需要给最外圈设置0-1的透明度的变化,要不然总是会有卡顿的感觉,你可以自己尝试一下加与不加的区别

1. 使用 padding  实现

动画实现:大圈padding缩到中圈的初始padding(同时不透明度从0-1)、中圈的padding缩到小圈的初始padding,小圈padding缩到0

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./dist/bundle.js"></script>
    <style>
      .flex-c {
        display: inline-flex;
        align-items: center;
        justify-content: center;
      }
      .wrapper {
        border: 1px solid red;
        width: 800px;
        height: 800px;
      }
      .center {
        width: 100px;
        height: 100px;
        background: red;
        border-radius: 50%;
      }
      .circle {
        border: 1px solid;
        border-radius: 50%;
      }
      .circle-1 {
        padding: 200px;
        /*最外圈要加一个透明度的变化*/
        border-color: rgba(0, 0, 0, 0);
        animation: animate1 2.5s linear infinite;
      }
      .circle-2 {
        padding: 100px;
        animation: animate2 2.5s linear infinite;
      }
      .circle-3 {
        padding: 50px;
        animation: animate3 2.5s linear infinite;
      }

      @keyframes animate1 {
        0% {
          padding: 200px;
          /*最外圈要加一个透明度的变化*/
          border-color: rgba(0, 0, 0, 0);
        }
        100% {
          padding: 100px;
          /*最外圈要加一个透明度的变化*/
          border-color: rgba(0, 0, 0, 1);
        }
      }

      @keyframes animate2 {
        0% {
          padding: 100px;
        }
        100% {
          padding: 50px;
        }
      }
      @keyframes animate3 {
        0% {
          padding: 50px;
        }
        100% {
          padding: 0px;
        }
      }
    </style>
  </head>
  <body>
    <div class="wrapper flex-c">
      <div class="flex-c circle circle-1">
        <div class="flex-c circle circle-2">
          <div class="flex-c circle circle-3">
            <div class="center flex-c">中心</div>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

2. 使用宽高实现

动画实现:大圈宽高缩到中圈的初始尺寸(同时不透明度从0-100)、中圈宽高缩到小圈的初始尺寸,小圈缩到中心的尺寸

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./dist/bundle.js"></script>
    <style>
      .flex-c {
        display: inline-flex;
        align-items: center;
        justify-content: center;
      }
      .wrapper {
        border: 1px solid rgba(0, 0, 0, 0.5);
        width: 1500px;
        height: 1500px;
        background: #000;
      }
      .center {
        width: 248px;
        height: 248px;
        background: rgba(255, 255, 255, 0.5);
        border-radius: 50%;
        opacity: 0.4;
        color: #fff;
      }
      .circle {
        border: 1px solid rgba(255, 255, 255, 0.5);
        border-radius: 50%;
      }
      .circle-1 {
        width: 1297px;
        height: 1297px;
        animation: animate1 2.5s linear infinite;
      }
      .circle-2 {
        width: 833px;
        height: 833px;
        animation: animate2 2.5s linear infinite;
      }
      .circle-3 {
        width: 503px;
        height: 503px;
        animation: animate3 2.5s linear infinite;
      }

      @keyframes animate1 {
        0% {
          width: 1297px;
          height: 1297px;
          /*最外圈要加一个透明度的变化*/
          border-color: rgba(255, 255, 255, 0);
        }
        100% {
          width: 833px;
          height: 833px;
          /*最外圈要加一个透明度的变化*/
          border-color: rgba(255, 255, 255, 0.6);
        }
      }

      @keyframes animate2 {
        0% {
          width: 833px;
          height: 833px;
        }
        100% {
          width: 503px;
          height: 503px;
        }
      }
      @keyframes animate3 {
        0% {
          width: 503px;
          height: 503px;
        }
        100% {
          width: 248px;
          height: 248px;
        }
      }
    </style>
  </head>
  <body>
    <div class="wrapper flex-c">
      <div class="flex-c circle circle-1">
        <div class="flex-c circle circle-2">
          <div class="flex-c circle circle-3">
            <div class="center flex-c">中心</div>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用css 动画实现,水波纹的效果 的相关文章

随机推荐

  • MOS管原理-1

    P型半导体参杂价电子为3的元素 一般为硼 因为硼的价电子比硅少一个 所以在共价键中少了一个电子 留下了空穴 空穴会吸引自由电子过来 入住 所以参与导电的是空穴 N型半导体参杂价电子为5的元素 一般为砷 因为砷的价电子比硅多一个 所以在N型半
  • Java Word转PDF

    两种方式 documents4j groupdocs 一 documents4j 1 添加依赖
  • Springer独立出版

    会议简介 Brief Introduction 2023年触觉与虚拟现实国际会议 ICHVR 2023 会议时间 2023年12月15日 17日 召开地点 中国 北海 大会官网 www ichvr org 2023年触觉与虚拟现实国际会议
  • C++ primer目录

    目录 第1章 快速入门 1 1 编写简单的C 程序 1 2 初窥输入 输出 1 2 1 标准输入与输出对象 1 2 2 一个使用IO库的程序 1 3 关于注释 1 4 控制结构 1 4 1 while语句 1 4 2 for 语句 1 4
  • IT痴汉的工作现状26-好项目,坏项目

    塞翁失马焉知非福 淮南子 人间训 祸兮 福之所倚 福兮 祸之所伏 老子 命运就是这样 当他给你关闭一扇门的同时也为你打开了另一扇门 同样 当他给你打开一扇门的同时也为你关闭了一扇门 有些事情 我们要用辩证的观点去看 人生如此 项目亦如此 伟
  • 数学建模——论文排版

    目录 一 参考文献的排版 1 三种方案 通常使用方案一 方案一有两种方法 2 参考文献排版要点总结 二 附录的排版 具体方法 补充 代码高亮 三 表格标题自动编号 进阶做法 四 公式编辑软件的介绍 1 LaTeX 较难 有时间可学 2 wo
  • AI会议排名_周志华

    AI会议排名 周志华 http blog sina com cn s blog 631a4cc40100xl7d html 南京大学周志华教授写的一个很经典的帖子 不过IJCAI能不能算成是no 1的会议有待商榷 不过总体还算客观 说明 纯
  • Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解 不知道大家有没有去看小编最后留下的问题 欢迎对文章进行评论也希望大家和小编多多交流 今天接着为大家带来Dubbo的内容 传输协议 上次调用机制中并没有涉及Dubbo传输的协议 这次容小
  • 多线程下载文件(支持暂停、取消、断点续传)

    多线程下载文件 支持暂停 取消 断点续传 多线程同时下载文件即 在同一时间内通过多个线程对同一个请求地址发起多个请求 将需要下载的数据分割成多个部分 同时下载 每个线程只负责下载其中的一部分 最后将每一个线程下载的部分组装起来即可 涉及的知
  • 看完这篇 教你玩转渗透测试靶机Vulnhub——HarryPotter:Aragog(1.0.2)

    Vulnhub靶机HarryPotter Aragog渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 漏洞发现 漏洞利用 数据库语句查询 SSH登入 备份文件提权
  • unable to install breakpoint in com... $ $FastClassBySpringCGLIB$ $12fabbfc due to missing line numb

    问题 unable to install breakpoint in com FastClassBySpringCGLIB 12fabbfc due to missing line number attributes Modify comp
  • linux定时执行shell脚本

    一 cron调度进程 c r o n是系统主要的调度进程 可以在无需人工干预的情况下运行作业 有一个叫做 c r o n t a b的命令允许用户提交 编辑或删除相应的作业 每一个用户都可以有一个c r o n t a b文件 来保存调度信
  • 量化投资学习-36:选股的基本方式

    1 选择的总原则 1 强者恒强 热点龙头 2 超跌反弹 星空雷达 2 策略总原则 1 主策略 1 2 辅策略 N 3 候选指标 趋势 支撑线 压力线 短期趋势通道 长期趋势通道 布林线 震荡 MACD底特征 KDJ震荡超卖 9转序列低9 能
  • 4大主流CPU处理器技术架构

    推荐阅读 浅谈linux 内核网络 sk buff 之克隆与复制 深入linux内核架构 进程 线程 了解Docker 依赖的linux内核技术 导读 RISC 精简指令集计算机 是一种执行较少类型计算机指令的微处理器 起源于80年代的MI
  • 【C++】STL中list容器内部元素的移动和交换

    文章目录 前言 一 list是什么 二 元素移动 1 插入 删除 2 切除 拼接 三 元素交换 1 元素值交换 2 元素 节点 交换 总结 前言 提示 list insert list erase list splice std iter
  • 【ESP32】反复重启

    ESP32开发 反复重启 串口输出如下所示 rst 0xc SW CPU RESET boot 0x13 SPI FAST FLASH BOOT configsip 188777542 SPIWP 0xee clk drv 0x00 q d
  • 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现

    很多用户都有这样需求 比如 点击按钮 刷新 GridView 中的数据 而不是这个页面刷新 使用简单的 XMLHttpRequest 就可以直接实现 具体代码如下 ASPX 代码 lt
  • C语言实现随机发纸牌

    C语言实现随机发纸牌 为避免重复发牌 设二维数组sign 4 13 记载是否发过纸牌 其中行下表表示花色 列下标表示点数 设字符串指针数组card n 存储随机发的n张纸牌 例如card 0 梅花2 按照以下方法以此发出每一张牌 首先产生一
  • Python异常捕获

    在 Python 中 try 和 except 语句用于捕获和处理异常 except 子句可以用来捕获不同类型的异常 Exception 这是 Python 中所有异常的基类 可以捕获几乎所有异常类型 ValueError 当函数收到不适当
  • 使用css 动画实现,水波纹的效果

    每日鸡汤 每个你想要学习的瞬间都是未来的你向自己求救 需求 实现水波纹动画效果 要求中心一个圆点 然后有3个圈 一圈一圈的向里面缩小 说实话我第一个想到了给3个圈设置不同的宽高 然后设置动画0 100 一次缩小宽高 但是 我转念一想 我是不