1. 程式人生 > 其它 >CSS3實現loading圖

CSS3實現loading圖

HTML5學堂:學習CSS3,重要的並不是那幾個命令,而是如何應用CSS3的知識實現網站中的效果,換句話說,“只有想不到,沒有做不到”。在這個效果當中,主要用到了圓角邊框和動畫。

HTML5學堂-劉國利在此鄭重宣告:本篇文章的靈感來源於2014年的自己一個學生的技術演講,他運用CSS3實現了loading圖效果,在此書寫出來與大家分享。效果創造的原作者——黃仕輝

實現的基本思路:利用圓角邊框對loading圖的樣式控制,讓其從方形變化為圓形;之後控制不同的邊框粗細,調整更佳的視覺效果;最後利用CSS3中的動畫,實現運動;在進行佈局的時候,要考慮移動端水平垂直居中的要求以及不同解析度狀態下的效果。

基本效果圖

基本html結構搭建

<!doctype html>
<html>
<head>
 <meta charset="UTF-8">
 <title>HTML5學堂 - CSS3 - loading圖</title>
 <link rel="stylesheet" href="../common/reset.css">
 <style>
     body,html {
         height: 100%;
     }
     .wrap{
         position: absolute;
         top: 0%;
         right: 0%;
         bottom: 0%;
         left: 0%;
         width: 0px;
         height: 0px;
         padding: 15%;
         margin: auto;
         border: 1px solid #06f;
         border-left-width: 4px;
         border-bottom-width: 3px;
         border-right-width: 2px;
         border-radius: 50%;
     }
 </style>
</head>
<body>
 <div class="wrap"></div>
</body>
</html>

此處採用了一種很特殊的居中方法,將盒模型進行定位處理之後,上下左右均採用了0%的值,然後運用margin:auto的控制,讓上下左右自動處理外邊距值,從而達到居中的狀態。關於元素的水平垂直居中,可點選檢視:《網易NEC水平垂直居中》

另一個處理,是寬度高度自適應的設定,在為width和height設定百分比之後,會分別根據父級元素的寬度和高度進行計算,此時一旦裝置寬度高度不同,我們的loading圖就不再是正圓形,由於padding設定百分比值時,均是按照文字方向計算的(預設都是參照父級的寬度計算),因此此處我們將寬高均設為0,而用padding進行內容區大小的設定。

關於邊框的設定已經提到了,四個方向採用不同的邊框粗細。

順便一提,由於使用的是CSS3進行控制,因此,即便是在PC端調整視窗大小,loading圖的大小也會隨之發生變化。

顯示效果

PS:從自己部落格(獨行冰海)取的圖片,所以自然底部就有水印了~~~

CSS3動畫設定

之後進行CSS3動畫的設定即可,在CSS中程式碼中增加如下內容:

.wrap{

 -webkit-animation: loading 2s linear infinite;
}

@-webkit-keyframes loading {
 from {-webkit-transform: rotate(0deg);}
 to {-webkit-transform: rotate(360deg);}
}

當前就已經實現出來了,不過,在測試的時候會發現,出現了滾動條,因此,我們可以給body再增加這樣一句程式碼:

body {
 overflow: hidden;
}

CSS3就已經搞定了~很簡單的解決了loading的效果,很適合在移動端應用。