使用CSS实现音波加载效果


Posted in HTML / CSS onMay 07, 2023

先看效果(完整代码在底部):

使用CSS实现音波加载效果

这个是比较常见的一个简约效果,拿下~

实现(可一步一步实现):

0.基本css样式(复制即可):

*{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body{
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: rgb(4, 6, 17);
        }

1.先定义标签(详解):

<div class="container">
        <span style="--i:1;"></span>
        <span style="--i:2;"></span>
        <span style="--i:3;"></span>
        <span style="--i:4;"></span>
        <span style="--i:5;"></span>
        <span style="--i:6;"></span>
        <span style="--i:7;"></span>
        <span style="--i:8;"></span>
        <span style="--i:9;"></span>
        <span style="--i:10;"></span>
    </div>

.container就是底层盒子,span就是每个圈。 "- -i:1;"是css的var函数的运用

2.底层盒子基本样式:

.container{
            position: relative;
            width: 20px;
            height: 20px;
            transform-style: preserve-3d;
            transform: perspective(500px) rotateX(50deg) translateZ(50px);
        } 

position:relative 相对定位。

transform-style:preserve-3d 子元素获得3D位置。

perspective:元素距离视图的距离,以像素计。

rotateX(50deg) 绕X轴旋转50度。

translateZ(50px); 往Z轴偏移50px。

3.每个圆圈的css样式,设置动画:

.container span{
            position: absolute;
            top: calc(-9px * var(--i));
            left: calc(-9px * var(--i));
            bottom: calc(-9px * var(--i));
            right: calc(-9px * var(--i));
            border: 5px solid rgba(0, 162, 255,0.8);
            box-shadow: 0 6px 0 rgb(0, 162, 255),
            inset 0 6px 0 rgba(0, 162, 255,.9);
            /* background-color: rgba(0, 162, 255,0); */
            border-radius: 50%;
            animation: move 1.5s ease-in-out infinite alternate;
            animation-delay: calc(var(--i) * 0.1s);
        }
        @keyframes move{
            0%,100%{
                transform: translateZ(0px);
            }
            50%{
               transform: translateZ(-100px);
            }
        } 

position: absolute; 绝对定位。

calc() 函数用于动态计算长度值。

top: calc(-9px * var(- -i));

left: calc(-9px * var(- -i));

bottom: calc(-9px * var(- -i));

right: calc(-9px * var(- -i)); 通过calc()计算每个圈的大小。

border: 5px solid rgba(0, 162, 255,0.8); 蓝色边框。

box-shadow: 0 6px 0 rgb(0, 162, 255),

inset 0 6px 0 rgba(0, 162, 255,.9); 阴影。一个外阴影,一个内阴影。目的是为了让圆圈有点立体效果。

border-radius: 50%; 角弧度。

animation: move 1.5s ease-in-out infinite alternate; 定义动画。

animation-delay: calc(var(–i) * 0.1s); 通过calc()计算每个圈延迟多久后执行动画。

transform: translateZ(0px); Z轴方向的偏移。

完整代码♪(^∀^●)ノ:

<!DOCTYPE html>
<html lang="zh-CN">
<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>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body{
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: rgb(4, 6, 17);
        }
        .container{
            position: relative;
            width: 20px;
            height: 20px;
            transform-style: preserve-3d;
            transform: perspective(500px) rotateX(50deg) translateZ(50px);
        }
        .container span{
            position: absolute;
            top: calc(-9px * var(--i));
            left: calc(-9px * var(--i));
            bottom: calc(-9px * var(--i));
            right: calc(-9px * var(--i));
            border: 5px solid rgba(0, 162, 255,0.8);
            box-shadow: 0 6px 0 rgb(0, 162, 255),
            inset 0 6px 0 rgba(0, 162, 255,.9);
            /* background-color: rgba(0, 162, 255,0); */
            border-radius: 50%;
            animation: move 1.5s ease-in-out infinite alternate;
            animation-delay: calc(var(--i) * 0.1s);
        }
        @keyframes move{
            0%,100%{
                transform: translateZ(0px);
            }
            50%{
               transform: translateZ(-100px);
            }
        }
       
    </style>
</head>
<body>
    <div class="container">
        <span style="--i:1;"></span>
        <span style="--i:2;"></span>
        <span style="--i:3;"></span>
        <span style="--i:4;"></span>
        <span style="--i:5;"></span>
        <span style="--i:6;"></span>
        <span style="--i:7;"></span>
        <span style="--i:8;"></span>
        <span style="--i:9;"></span>
        <span style="--i:10;"></span>
    </div>
</body>
</html>

到此这篇关于使用CSS实现音波加载效果的文章就介绍到这了,更多相关CSS音波加载效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
css3中transition属性详解
Sep 02 HTML / CSS
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
Dec 30 HTML / CSS
详解css3中 text-fill-color属性
Jul 08 HTML / CSS
html5文本内容_动力节点Java学院整理
Jul 11 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
Nov 05 HTML / CSS
video结合canvas实现视频在线截图功能
Jun 25 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
Sep 24 HTML / CSS
HTML5 实战PHP之Web页面表单设计
Oct 09 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
Jul 02 HTML / CSS
html5实现的便签特效(实战分享)
Nov 29 HTML / CSS
html5 canvas简单封装一个echarts实现不了的饼图
Jun 12 HTML / CSS
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
Dec 24 HTML / CSS
table不让td文字溢出操作方法
Dec 24 #HTML / CSS
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
Dec 24 #HTML / CSS
td 内容自动换行 table表格td设置宽度后文字太多自动换行
Dec 24 #HTML / CSS
HTML页面点击按钮关闭页面的多种方式
Dec 24 #HTML / CSS
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
Dec 24 #HTML / CSS
CSS使用SVG实现动态分布的圆环发散路径动画
Dec 24 #HTML / CSS
CSS中理解层叠性及权重如何分配
Dec 24 #HTML / CSS
You might like
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
python实现目录树生成示例
2014/03/28 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Python实现Restful API的例子
2019/08/31 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
给国外客户的邀请函
2014/01/30 职场文书
西门豹教学反思
2014/02/04 职场文书
简历中的自我评价范文
2014/02/05 职场文书
黄河的主人教学反思
2014/02/07 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
小学生思想品德评语
2014/12/31 职场文书
三国演义读书笔记
2015/06/25 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript