1. 程式人生 > 其它 >CSS3實現小球載入效果

CSS3實現小球載入效果

技術標籤:css3css

實現原理。

在這裡插入圖片描述

  1. 設定大盒子居中.

  2. box1與box2定位在一起,

  3. 給小球定位到左上,右上,右下,右下, box2旋轉45deg,盒內小球跟著旋轉,錯開位置,呈現出八個小球

  4. 給初始色設定透明度變小,動畫執行時,透明度變成1,看起來就是亮了一樣 。

  5. 設定動畫名稱load,執行時間為1秒,次數為無限次infinite。

  6. 8個小球,一起執行,設定延遲時間,最大延遲等於執行時間,當動畫執行12.5%時,也就是執行了0.125秒時小球的透明度為1,然後剩下的87.5%剩下的處於透明度為0.3.相當於暗的狀態.

  7. 相當於排隊打飯,一個人打飯需要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>