CSS3實現小球載入效果
阿新 • • 發佈:2020-12-19
實現原理。
-
設定大盒子居中.
-
box1與box2定位在一起,
-
給小球定位到左上,右上,右下,右下, box2旋轉45deg,盒內小球跟著旋轉,錯開位置,呈現出八個小球
-
給初始色設定透明度變小,動畫執行時,透明度變成1,看起來就是亮了一樣 。
-
設定動畫名稱load,執行時間為1秒,次數為無限次infinite。
-
8個小球,一起執行,設定延遲時間,最大延遲等於執行時間,當動畫執行12.5%時,也就是執行了0.125秒時小球的透明度為1,然後剩下的87.5%剩下的處於透明度為0.3.相當於暗的狀態.
-
相當於排隊打飯,一個人打飯需要1s,第一個人打飯結束,第二個人打飯,第二個人需要等待1s,依次類推,第三個人打飯需要等待2s,他打飯需要1秒,三個人全部打完飯需要3s。這就是相當於動畫完成時間為1秒。8個小球,第一個小球不用等待,直接執行,0.125秒,也就是動畫執行到12.%,剩下的0.875也就是87.5%小球處於opaticy為.3的狀態,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background-color : black;
}
/*設定大盒子居中 */
.box {
position: absolute;
width: 200px;
height: 200px;
margin: 0 auto;
top: 50%;
left: 50%;
margin-top: -100px;
margin-left: -100px;
}
/*box1與box2定位在一起, */
.box1,
.box2 {
position: absolute;
width: 200px;
height: 200px;
top: 0;
left: 0;
}
/* 給小球定位到左上,右上,右下,右下, box2旋轉45deg,盒內小球跟著旋轉,錯開位置,呈現出八個小球 */
.box2 {
transform: rotate(45deg);
}
span {
position: absolute;
width: 14px;
height: 14px;
background-color: aqua;
border-radius: 50%;
/*給初始色設定透明度變小,動畫執行時,透明度變成1,看起來就是亮了一樣 */
opacity: .3;
animation: load 1s infinite;
/* 設定動畫名稱load,執行時間為1秒,次數為無限次infinite */
animation: load 1s infinite;
}
span:nth-child(1) {
top: 0;
left: 0;
}
span:nth-child(2) {
right: 0;
top: 0;
}
span:nth-child(3) {
right: 0;
bottom: 0;
}
span:nth-child(4) {
left: 0;
bottom: 0;
}
/* 8個小球,一起執行,設定延遲時間,最大延遲等於執行時間,當動畫執行12.5%時,也就是執行了0.125秒時小球的透明度為1,然後剩下的87.5%剩下的處於透明度為0.3.相當於暗的狀態.*/
/* 相當於排隊打飯,一個人打飯需要1s,第一個人打飯結束,第二個人打飯,第二個人需要等待1s,依次類推,第三個人打飯需要等待2s,他打飯需要1秒,三個人全部打完飯需要3s。這就是相當於動畫完成時間為1秒。8個小球,第一個小球不用等待,直接執行,0.125秒,也就是動畫執行到12.%,剩下的0.875也就是87.5%小球處於opaticy為.3的狀態, */
@keyframes load {
12.5% {
opacity: 1;
}
20% {
opacity: .3;
}
100% {
opacity: .3;
}
}
.box1 span:nth-child(1) {
animation-delay: 0s;
}
.box2 span:nth-child(1) {
animation-delay: .125s;
}
.box1 span:nth-child(2) {
animation-delay: .25s;
}
.box2 span:nth-child(2) {
animation-delay: .375s;
}
.box1 span:nth-child(3) {
animation-delay: .5s;
}
.box2 span:nth-child(3) {
animation-delay: .625s;
}
.box1 span:nth-child(4) {
animation-delay: .75s;
}
.box2 span:nth-child(4) {
animation-delay: 0.875s;
}
</style>
</head>
<body>
<div class="box">
<div class="box1">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="box2">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
</body>
</html>