用純CSS實現餅狀Loading等待圖

CSS Chrome HTML 穩穩地幸福y 2017-05-22

想要完整代碼自己練習的小夥伴進我的群自助領取,已經上傳到群文件裡了,群號:230354270,歡迎學習交流的小夥伴過來一起學習交流。

之前碰到一個小練習,就是用純CSS3來寫餅狀的loading效果,之前著實沒有寫過這玩意兒,小花完全沒頭緒,然後參考了張鑫旭老師的CSS3實現雞蛋餅餅狀圖loading等待轉轉轉,還有些別的東西,用一種看起來有一點類似但是好像又不一樣的方式完成了同樣的效果,題目要求的大概就是這個樣子:

用純CSS實現餅狀Loading等待圖

look me

開始

琢磨了一下,睡一覺起來畫了個圖,理順了一下,不過感覺此圖有點難意會啊啊啊啊啊,沒關係,小花會在後文一點一點解釋噠~(紅跟粉代表顏色,斜槓後面是z-index的值)

用純CSS實現餅狀Loading等待圖

餅狀loading流程圖

原理

這個東西分為兩部分:外圈和內圓。顏色這東西都自定義啦,不過我畫的的圈圈好像有點太大,然後動畫時間是隨便設的,反正轉起來看著感覺有點怪怪的額

先上html結構

用純CSS實現餅狀Loading等待圖

外圈和內圓是通過position定位重合在一起,實質上外圈轉完2圈,內圓的紅色和粉色才各轉完1圈(內圓的全程包括紅色從1到0、粉色從1到0),所以內圓的動畫時間應該是外圈的兩倍!!!

  1. 外圈

外圈很簡單,設置border-radius:50%即可畫出一個圓,然後設置三條邊框為紅色,另外一條為透明,即畫出了四分之三個圓邊框(即外圓)。

用純CSS實現餅狀Loading等待圖

用純CSS實現餅狀Loading等待圖

四分之三個圓邊框

接下來是外圈的動畫,為其設置的動畫就是旋轉一圈,infinite表示無限次

用純CSS實現餅狀Loading等待圖

其中rotate(120deg)為旋轉起始位置,可根據實際情況調整。

至此外圈就完成了,比較麻煩的是下面的內圓,不過根據圖示應該是可以想象的。

2.內圓

此處有四個半圓,左邊兩個,右邊兩個(round為紅色,mask為粉色),動畫主要通過改變兩個紅色半圓的z-index值來控制各個半圓顯示的優先順序。內圓的css實現部分為:

用純CSS實現餅狀Loading等待圖

下面過程描述內圓的動畫全程(其中右邊的粉色全程不需要動,右邊紅色部分只需要改變z-index的值來改變顯示的優先級,從而實現顯示和隱藏的效果來配合補充左半邊的圓。):

  1. 初始設置:

用純CSS實現餅狀Loading等待圖

模型圖:

用純CSS實現餅狀Loading等待圖

模型圖1

視覺效果圖(忽略中間的白線):

用純CSS實現餅狀Loading等待圖

視覺效果圖

2.左邊紅色旋轉完180度時(逆時針旋轉所以是360→180→0)

模型圖:

用純CSS實現餅狀Loading等待圖

模型圖2

視覺效果圖:

用純CSS實現餅狀Loading等待圖

視覺效果圖

3.左邊紅色轉完到0度時(此時左右兩邊的紅色半圓被粉色覆蓋)

模型圖:

用純CSS實現餅狀Loading等待圖

模型圖3

視覺效果圖:

用純CSS實現餅狀Loading等待圖

視覺效果圖

4.粉色半圓重複之前紅色半圓的動畫(即左邊粉色360→180→0)

模型圖:

用純CSS實現餅狀Loading等待圖

模型圖4

視覺效果圖:

用純CSS實現餅狀Loading等待圖

視覺效果圖

5.當左邊粉色旋轉到0度時,全部半圓回到了最初始的狀態,整個動畫即完成(在相同時間下外圈完成了2次的動畫)。

模型圖:

用純CSS實現餅狀Loading等待圖

模型圖5

視覺效果圖:

用純CSS實現餅狀Loading等待圖

視覺效果圖

動畫代碼部分

  1. 前半程為左邊紅色旋轉一週,後半程為粉色旋轉一週。動畫實現如下:

用純CSS實現餅狀Loading等待圖

2.在全部代碼未完成時,可以將動畫時間設大一點,這樣便於觀察,搞完了再設回去就OK了。

3.由於動畫是勻速變化的,但是z-index的值不能勻速變化,所以只能在某個很短時間內去改變z-index的值。這樣才能達到效果(突然感覺這種實現好像也不是很好)

小結

  1. 沒做兼容,在chrome中無異常,別的我就不太知道了

  2. 只是用來練習練習,實際上不一定會用到,但是裡面幾個知識點還是hei有用滴

  3. 小花是小白,對很多東西都還沒整明白,歡迎大佬們指點指點~

  4. 這幾個圖畫的我心好累,sei能給小花推薦個好用點的額

源代碼

  • 源碼地址:加群裡面每天都會上傳免費的學習資料:230354270

給看完本文的孩紙們一個愛的麼麼噠!!!

想要完整代碼自己練習的小夥伴進我的群自助領取,已經上傳到群文件裡了,群號:230354270,歡迎學習交流的小夥伴過來一起學習交流。

相關推薦

推薦中...