css特效——音波加载

音波加载


接上一篇的内容

一、搭建思路

首先,造一个大的盒子outbox,接着往里面填充10个小盒子span。设置他们的布局,先让大盒子绕X轴旋转一定的角度,达到斜俯视的效果,更像3D.接着,将小盒子按顺序缩小,做成套环的样子,最后,设置动画效果,让每个小的盒子 都按向上后下的动画动起来,在按顺序延迟一定的秒数。这样就成了联动效果。

二、步骤代码

先设置HTML的

 <div class="outbox">
        <span style="--num:1"></span>
        <span style="--num:2"></span>
        <span style="--num:3"></span>
        <span style="--num:4"></span>
        <span style="--num:5"></span>
        <span style="--num:6"></span>
        <span style="--num:7"></span>
        <span style="--num:8"></span>
        <span style="--num:9"></span>
        <span style="--num:10"></span>
    </div>
style="–num:1" 对于这个不懂的话下面有讲解。

再初始化大盒子和背景

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
body{
    display: flex;
    height: 100vh;
    justify-content: center;
    align-items: center;
    background-color: rgb(4, 6, 17);
}
.outbox{
    position: relative;
    width: 100px;
    height: 100px;
    transform-style: preserve-3d;
    transform: perspective(600px) rotateX(50deg) translateZ(50px);
}

最后设置span的样式

.outbox span{
    position: absolute;
    top: calc(-8px * var(--num));
    left: calc(-8px * var(--num));
    bottom: calc(-8px * var(--num));
    right: calc(-8px * var(--num));
    border: 8px 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(--num) * 0.1s);
}

其中,小盒子的宽高我没有设置,让他继承父级的宽高,方便使用CSS函数。

move 是我定义的一个函数。在后面会有。

top: calc(-8px * var(–num));
left: calc(-8px * var(–num));
bottom: calc(-8px * var(–num));
right: calc(-8px * var(–num));

这是动态的计算小盒子再大盒子里面的方位,强制让他变小

定义一个先下后上的动画
@keyframes move{
    0%,100%{
        transform: translateZ(0px);
    }
    50%{
       transform: translateZ(-100px);
    }
}

三、CSS函数var()

这个函数必须要求定义一个“–XXX:XX”的属性,写在行内样式中。之后用var(–XXX)来使用,相当于JS中遍历这个数组一样。

[CSS var() 函数 | 菜鸟教程 (runoob.com)

四、效果展示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痞子三分冷ゾジ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值