CSS3的新特性为我们实现漂亮的进度条扫清了障碍,我们可以完全不需要任何图片和简单的Javascript代码就可以构建。
**一、第一个例子**
效果图:
![](https://box.kancloud.cn/2016-08-02_57a05bd982f66.gif)
Demo地址:[http://namepk.sinaapp.com/demo/progress.html](http://namepk.sinaapp.com/demo/progress.html)。
1、 基本的HTML
HTML代码非常简单:
~~~
<div id="loading-status"> <div id="precent"></div> </div>
~~~
loading-status表示外层的容器,precent表示进度条。
2、 CSS代码
~~~
#loading-status { width: 300px; border: 1px #669CB8 solid; -webkit-box-shadow: 0px 2px 2px #D0D4D6; height: 15px; -webkit-border-radius: 10px; background: -webkit-gradient(linear, 0 0, 0 100%, from(#E1E9EE), to(white)); padding: 1px;}
~~~
我们为外层容器添加了边框、圆角、阴影和渐变背景,效果如下图所示:
![](https://box.kancloud.cn/2016-08-02_57a05bd994dad.gif)
进度条的CSS代码如下:
~~~
#process { background: -webkit-gradient(linear, 0 0, 0 100%, from(#7BC3FF), color-stop(0.5,#42A9FF), to(#7BC3FF)); width: 0%; height: 100%; -webkit-border-radius: 10px;}
~~~
将width修改为10%可以看到效果:
![](https://box.kancloud.cn/2016-08-02_57a05bd9a8621.gif)
3、动画
通过控制width的百分比就可以控制进度条的显示,动画用CSS3的animation或者transition都可以实现,这里我们选择animation:
~~~
#process { background: -webkit-gradient(linear, 0 0, 0 100%, from(#7BC3FF), color-stop(0.5,#42A9FF), to(#7BC3FF)); width: 0%; height: 100%; -webkit-border-radius: 10px; -webkit-transition: width 1s ease-in-out;}
~~~
然后我们通过Javascript来控制precent元素的宽度就可以实现进度条的动画效果了:
~~~
Jquery: $(‘#precent’).width(‘80%’)Javascript: document.getElementById(‘precent’).style.width = ‘80%’
~~~
**二、第二个例子**
下面我们实现一个更为复杂一点的进度条:
![](https://box.kancloud.cn/2016-08-02_57a05bd9ba7fc.gif)
Demo地址:[http://namepk.sinaapp.com/demo/progress.html](http://namepk.sinaapp.com/demo/progress.html)。
1、基本的HTML
~~~
<div class="box animate"> <span> <span></span> </span> </div>
~~~
一共是三个元素。
2、 CSS样式
~~~
.box { height: 20px; position: relative; background: hsl(0, 0%, 35%); -webkit-border-radius: 15px; padding: 6px; -webkit-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); width: 300px; }
~~~
外框样式如下所示:
![](https://box.kancloud.cn/2016-08-02_57a05bd9ced72.gif)
~~~
.box > span { display: block; height: 100%; -webkit-border-top-right-radius: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-border-top-left-radius: 15px; -webkit-border-bottom-left-radius: 15px; background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #63DE4E), color-stop(1, #34A702)); -webkit-box-shadow: inset 0 2px 9px rgba(255,255,255,0.3), inset 0 -2px 6px rgba(0,0,0,0.4); position: relative; overflow: hidden; }
~~~
基本进度条样式如下所示:
![](https://box.kancloud.cn/2016-08-02_57a05bd9e5420.gif)
为内层的span定义的样式如下,主要是设定了一个渐变的背景。
~~~
.animate > span > span { content: ""; position: absolute; top: 0;left: 0;bottom: 0;right: 0; background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent)); z-index: 2; -webkit-border-top-right-radius: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-border-top-left-radius: 20px; -webkit-border-bottom-left-radius: 20px; overflow: hidden; }
~~~
样式如下:
![](https://box.kancloud.cn/2016-08-02_57a05bda04e2e.gif)
我们还需要添加一个属性:
-webkit-background-size: 40px;
现在效果如下图所示:
![](https://box.kancloud.cn/2016-08-02_57a05bda1ce74.gif)
3、 动画
动画我们通过改变background-position来实现。代码如下:
~~~
.animate > span span { content: ""; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent)); z-index: 2; -webkit-background-size: 40px; -webkit-animation: move 2s linear infinite; -webkit-border-top-right-radius: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-border-top-left-radius: 20px; -webkit-border-bottom-left-radius: 20px; overflow: hidden; } @-webkit-keyframes move { 0% { background-position: 0 0; } 100% { background-position: 50px 50px; } }
~~~
最终的效果如下:
![](https://box.kancloud.cn/2016-08-02_57a05bd9ba7fc.gif)
写在最后:由我担任作者的一本HTML5入门书籍正在策划和写作中,大家可以期待一下,呵呵。
![](https://box.kancloud.cn/2016-08-02_57a05bda3ce5b.gif)
- 前言
- AutoPager的简单实现
- 利用CSS3特性巧妙实现漂亮的DIV箭头
- IE9在Win7下任务栏新特性简介
- 浏览器九宫格的简单实现
- Raphael js库简介
- 使用CSS3构建Ajax加载动画
- 用CSS3创建动画价格表
- 用CSS3实现浏览器的缩放功能
- 用纯CSS3实现QQ LOGO
- 用CSS3创建旋转载入器
- 使用Javascript开发移动应用程序
- 用HTML5创建超酷图像灰度渐变效果
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
- 仅用CSS创建立体旋转幻灯片
- 如何创建跨浏览器的HTML5表单
- 用CSS3实现动画进度条
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas动画实例
- 谈HTML5和CSS3的国际化支持
- 实现跨浏览器的HTML5占位符
- 前端开发必备工具:WhatFont Bookmarklet-方便的查询网页上的字体
- 使用HTML5和CSS3来创建幻灯片
- HTML5之美
- 如何使用HTML5创建在线精美简历
- 以小见大、由浅入深-谈如何面试Javascript工程师
- 快速入门:HTML5强大的Details元素
- 用CSS3实现图像风格
- HTML5视频字幕与WebVTT
- 用纯CSS3实现Path华丽动画
- 用3个步骤实现响应式网页设计
- 遇见CSS3滤镜
- 关于CSS3滤镜的碎念
- 用纯CSS3绘制萌系漫画人物动态头像
- CSS3新的鼠标样式介绍
- 用HTML5献上爱的3D玫瑰
- 对HTML5 Device API相关规范的解惑
- 如何使用HTML5实现拍照上传应用
- 2012第一季度国外HTML5移动开发趋势
- HTML5新特性:范围样式
- 百度开发者大会-《用HTML5新特性开发移动App》PPT分享
- Chrome 19对于HTML5最新支持的动态:电池状态API,全屏API,震动API,语音API
- 遇见Javascript类型数组(Typed Array)
- 用HTML5 Audio API开发游戏音乐
- 用HTML5实现人脸识别
- 用Javascript实现人脸美容
- Chrome 20对于HTML5最新支持的动态:颜色输入,网络信息API,CSS着色器
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现iPad应用无限平滑滚动
- 用非响应式设计构建跨端Web App
- 了解SVG
- HTML5图像适配介绍
- HTML5安全:内容安全策略(CSP)简介
- HTML5安全:CORS(跨域资源共享)简介
- 用CSS3 Region和3D变换实现书籍翻页效果
- 谈谈移动App的思维误区
- Chrome新特性:文件夹拖拽支持
- 《关注HTML5安全》
- HTML5安全风险详析之一:CORS攻击
- HTML5安全风险详析之二:Web Storage攻击
- HTML5图像适配最新进展:响应式图片规范草案
- HTML5移动Web App相关标准状态及路线图
- HTML5安全风险详析之三:WebSQL攻击
- Chrome引入WebRTC支持视频聊天App
- HTML5安全风险详析之四:Web Worker攻击
- HTML5安全风险详析之五:劫持攻击
- HTML5安全风险详析之六:API攻击
- HTML5安全攻防详析之七:新标签攻击
- 在iOS Safari中播放离线音频
- 使用WebRTC实现远程屏幕共享
- Firefox、Android、iOS遇见WebRTC
- HTML5光线传感器简介
- HTML5安全攻防详析之八:Web Socket攻击
- HTML5安全攻防详析之完结篇:HTML5对安全的改进
- 激动人心!在网页上通过语音输入文字 - HTML5 Web Speech API介绍
- Web滚动性能优化实战
- 用CSS3设计响应式导航菜单
- 用HTML5构建高性能视差网站
- 漫谈@supports与CSS3条件规则
- HTML5下载属性简介
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(一)
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)
- 趋势:Chrome为打包应用提供强大新特性
- 从HTML5移动应用现状谈发展趋势
- 基于HTML5的Web跨设备超声波通信方案