AJax等待回調,或者加載頁面的時候,我們通常的做法就是放一張loading.gif圖片,下面與大家介紹下純CSS打造的忙碌光標,需要的朋友可以看看
我們經常會用到忙碌等待的情況,比如AJax等待回調,或者加載頁面的時候,我們通常的做法就是放一張loading.gif圖片,在那裡轉呀轉。
以前是在pc上用,也沒有覺得不妥,如今要在移動端用,問題就來了,以前呢,做前端,兼容各種浏覽器,就夠讓人頭疼了,現在還要兼容各種屏幕尺寸。
開始呢,是做了N張不同大小的gif圖。用Javascript去判斷屏的大小,然後選擇適當的gif圖片,這樣做的缺點是很顯的,說多了都是淚。現在我要做的,就是換成CSS3去實現這個效果。下面看效果圖:
有興趣的,可以復制下面的源碼:
復制代碼代碼如下:
<!DOCTYPE Html>
<Html>
<head>
<meta http-equiv="Content-Type" content="text/Html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1">
<meta name="vIEwport" content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=3">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<style type="text/CSS">
body {
margin: 0;
padding: 0;
}
/* for busy */
#busyIcon {
z-index:99999;
position:absolute;
top:0;left:0;
width:100%;
height:100%;
background-color: rgba(0,0,0,0.7);
}
.container {
width:100px;
height: 100px;
background-color:black;
opacity: 0.8;
margin-top: -50px;
margin-left: -50px;
position: absolute;
top:50%;left:50%;
-webkit-border-radius: 10%;
}
.top,.base {
height: 30%;
}
.spinner {
height: 40%;
width: 40%;
position: relative;
margin: 0 auto;
}
.spinner div {
width: 12%;
height: 26%;
background-color: white;
position: absolute;
left: 44.5%;
top: 37%;
opacity: 0;
-webkit-border-radius: 30%;
-webkit-animation: fade 1s linear infinite;
}
.spinner div.bar1 {-webkit-transform:rotate(0deg) translate(0, -142%); -webkit-animation-delay: 0s;}
.spinner div.bar2 {-webkit-transform:rotate(30deg) translate(0, -142%); -webkit-animation-delay: -0.9167s;}
.spinner div.bar3 {-webkit-transform:rotate(60deg) translate(0, -142%); -webkit-animation-delay: -0.833s;}
.spinner div.bar4 {-webkit-transform:rotate(90deg) translate(0, -142%); -webkit-animation-delay: -0.75s;}
.spinner div.bar5 {-webkit-transform:rotate(120deg) translate(0, -142%); -webkit-animation-delay: -0.667s;}
.spinner div.bar6 {-webkit-transform:rotate(150deg) translate(0, -142%); -webkit-animation-delay: -0.5833s;}
.spinner div.bar7 {-webkit-transform:rotate(180deg) translate(0, -142%); -webkit-animation-delay: -0.5s;}
.spinner div.bar8 {-webkit-transform:rotate(210deg) translate(0, -142%); -webkit-animation-delay: -0.41667s;}
.spinner div.bar9 {-webkit-transform:rotate(240deg) translate(0, -142%); -webkit-animation-delay: -0.333s;}
.spinner div.bar10 {-webkit-transform:rotate(270deg) translate(0, -142%); -webkit-animation-delay: -0.25s;}
.spinner div.bar11 {-webkit-transform:rotate(300deg) translate(0, -142%); -webkit-animation-delay: -0.1667s;}
.spinner div.bar12 {-webkit-transform:rotate(330deg) translate(0, -142%); -webkit-animation-delay: -0.0833s;}
@-webkit-keyframes fade {
from {opacity: 1;}
to {opacity: 0.25;}
}
/*End busy*/
</style>
</head>
<body>
<div id="busyIcon">
<div class="container">
<div class="top"></div>
<div class="spinner">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
<div class="bar4"></div>
<div class="bar5"></div>
<div class="bar6"></div>
<div class="bar7"></div>
<div class="bar8"></div>
<div class="bar9"></div>
<div class="bar10"></div>
<div class="bar11"></div>
<div class="bar12"></div>
</div>
<div class="base"></div>
</div>
</div>
</body>
</Html>
這裡是為了方便演示,對浏覽器的兼容省略了,實際項目中,我用JS進行了封裝,方便調用和控制。
本例只記錄一下原理,封裝後的代碼就不貼了。下面發一張應用中的效果裁圖。
CSS3能做的還有很多,以後慢慢分享。