10
09/2014
pure css ajax indicator
效果
代码
全局变量
@ball-size:40px; //球大小
@indi-length:8px; //红线长度
@indi-width:2px; //红线宽度
@divs-nums:5; //几根红线(注意是两头都有,所以5根)
@circle-time:2s; //转圈速度
.gsAjaxIndi {
position: relative;
display: inline-block;
width: @ball-size;height: @ball-size;
-webkit-animation: gs_spin @circle-time linear infinite;
-o-animation: gs_spin @circle-time linear infinite;
animation: gs_spin @circle-time linear infinite;
div {
position: absolute;
left:50%;margin-left: -1 * @indi-width / 2;
border:solid @indi-length red;
height: @ball-size - (@indi-length *2);
width: @indi-width;
box-sizing:content-box;
display: inline-block;
border-left: 0;
border-right: 0;
}
.rotateDiv(@index) when (@index =< @divs-nums){
& :nth-child(@{index}) {
-webkit-transform:rotate(180/@divs-nums*@index*1deg);
transform:rotate(180/@divs-nums*@index*1deg);
}
.rotateDiv(@index+1);
}
.rotateDiv(1);
}
@-webkit-keyframes gs_spin {
100% {
-webkit-transform:rotate(360deg);
}
}
@keyframes gs_spin {
100% {
transform:rotate(360deg);
}
}
注意:.rotateDiv(@index) when (@index =< @divs-nums){…} 产生循环,生成
.gsAjaxIndi :nth-child(1) {
-webkit-transform: rotate(36deg);
transform: rotate(36deg);
}
.gsAjaxIndi :nth-child(2) {
-webkit-transform: rotate(72deg);
transform: rotate(72deg);
}
.gsAjaxIndi :nth-child(3) {
-webkit-transform: rotate(108deg);
transform: rotate(108deg);
}
…
js 不一定需要,也可以手工 div 嵌套。