CSS3制作ajax loader icon实现思路及代码


Posted in HTML / CSS onAugust 25, 2013

本文用到的两个CSS3属性:transform、animation
一、HTML

复制代码
代码如下:

<div class="ajax-loading">
<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>

二、CSS

复制代码
代码如下:

.ajax-loading {
position: relative;
width: 100px;
height: 100px;
margin: 25px;
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-animation: rotateThis 1s infinite step-start;
animation: rotateThis 1s infinite step-start;
}
.ajax-loading div {
position: absolute;
top: 35px;
left: 45px;
width: 10px;
height: 30px;
background: #000;
}
.ajax-loading div.bar1 {
-webkit-transform: rotate(0deg) translate(0, -40px);
transform: rotate(0deg) translate(0, -40px);
opacity: 0.12;
}
.ajax-loading div.bar2 {
-webkit-transform: rotate(45deg) translate(0, -40px);
transform: rotate(45deg) translate(0, -40px);
opacity: 0.25;
}
.ajax-loading div.bar3 {
-webkit-transform: rotate(90deg) translate(0, -40px);
transform: rotate(90deg) translate(0, -40px);
opacity: 0.37;
}
.ajax-loading div.bar4 {
-webkit-transform: rotate(135deg) translate(0, -40px);
transform: rotate(135deg) translate(0, -40px);
opacity: 0.5;
}
.ajax-loading div.bar5 {
-webkit-transform: rotate(180deg) translate(0, -40px);
transform: rotate(180deg) translate(0, -40px);
opacity: 0.62;
}
.ajax-loading div.bar6 {
-webkit-transform: rotate(225deg) translate(0, -40px);
transform: rotate(225deg) translate(0, -40px);
opacity: 0.75;
}
.ajax-loading div.bar7 {
-webkit-transform: rotate(270deg) translate(0, -40px);
transform: rotate(270deg) translate(0, -40px);
opacity: 0.87;
}
.ajax-loading div.bar8 {
-webkit-transform: rotate(315deg) translate(0, -40px);
transform: rotate(315deg) translate(0, -40px);
opacity: 1;
}
@-webkit-keyframes rotateThis {
0% {-webkit-transform:scale(0.5) rotate(0deg);}
12.5% {-webkit-transform:scale(0.5) rotate(45deg);}
25% {-webkit-transform:scale(0.5) rotate(90deg);}
37.5% {-webkit-transform:scale(0.5) rotate(135deg);}
50% {-webkit-transform:scale(0.5) rotate(180deg);}
62.5% {-webkit-transform:scale(0.5) rotate(225deg);}
75% {-webkit-transform:scale(0.5) rotate(270deg);}
87.5% {-webkit-transform:scale(0.5) rotate(315deg);}
100% {-webkit-transform:scale(0.5) rotate(360deg);}
}
@keyframes rotateThis {
0% {transform:scale(0.5) rotate(0deg);}
12.5% {transform:scale(0.5) rotate(45deg);}
25% {transform:scale(0.5) rotate(90deg);}
37.5% {transform:scale(0.5) rotate(135deg);}
50% {transform:scale(0.5) rotate(180deg);}
62.5% {transform:scale(0.5) rotate(225deg);}
75% {transform:scale(0.5) rotate(270deg);}
87.5% {transform:scale(0.5) rotate(315deg);}
100% {transform:scale(0.5) rotate(360deg);}
}

三、思路
1. transform控制每个小方块在Y轴的偏移,rotate控制旋转的角度,scale缩放至原大小的一半;
2. opacity在每个小方块之间相差0.12左右,达到渐变效果;
3. 设置top与left偏移,控制圆心在中心处;
4. 为整个方块设置旋转动画rotateThis,定义8个时间点;
5. 设置动画的animation-timing-function为step-start,达到的效果是不让动画渐变;
HTML / CSS 相关文章推荐
纯CSS3代码实现switch滑动开关按钮效果
Aug 30 HTML / CSS
实例教程 纯CSS3打造非常炫的加载动画效果
Nov 05 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
HTML5: Web 标准最巨大的飞跃
Oct 17 HTML / CSS
html5实现微信打飞机游戏
Mar 27 HTML / CSS
html5定位获取当前位置并在百度地图上显示
Aug 22 HTML / CSS
HTML5 History API 实现无刷新跳转
Jan 11 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
HTML5 3D书本翻页动画的实现示例
Aug 28 HTML / CSS
HTML5 weui使用笔记
Nov 21 HTML / CSS
几款流行的HTML5 UI框架比较(小结)
Apr 08 HTML / CSS
使用CSS实现百叶窗效果示例代码
May 07 HTML / CSS
css3学习心得分享
Aug 19 #HTML / CSS
CSS3实现的闪烁跳跃进度条示例(附源码)
Aug 19 #HTML / CSS
css3实现背景图片拉伸效果像桌面壁纸一样
Aug 19 #HTML / CSS
发现两个有趣的CSS3动画效果
Aug 14 #HTML / CSS
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
Aug 11 #HTML / CSS
CSS3正方体旋转示例代码
Aug 08 #HTML / CSS
CSS3 透明色 RGBA使用介绍
Aug 06 #HTML / CSS
You might like
PHP 变量的定义方法
2010/01/26 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
python实现tail -f 功能
2020/01/17 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
计算机专业毕业生自我鉴定
2014/01/16 职场文书
委托公证书
2014/04/08 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
病假条格式范文
2015/08/17 职场文书
七年级话题作文之执着
2019/11/19 职场文书