图解CSS3制作圆环形进度条的实例教程


Posted in HTML / CSS onMay 26, 2016

首先,当有人说你能不能做一个圆形进度条效果出来时,如果是静态完整圆形进度条,那么就很简单了:

CSS Code复制内容到剪贴板
  1. .circleprogress{   
  2.     width160px;   
  3.     height160px;   
  4.     border:20px solid red;   
  5.     border-radius: 50%;   
  6. }  

图解CSS3制作圆环形进度条的实例教程

然后就会说,这很简单嘛。但是如果不是完整圆形的呢?想了想:

CSS Code复制内容到剪贴板
  1. .circleprogress{   
  2.   width160px;   
  3.   height160px;   
  4.   border:20px solid red;   
  5.   border-left:20px solid transparent;   
  6.   border-bottom:20px solid transparent;   
  7.   border-radius: 50%;   
  8. }  

图解CSS3制作圆环形进度条的实例教程

然后还是会说,这个也不难啦。可是,如果不是刚好都是45度的倍数呢?

OK,我们先设置一个200x200的方块,然后我们在这里面完成我们的效果:

CSS Code复制内容到剪贴板
  1. .circleProgress_wrapper{   
  2.   width200px;   
  3.   height200px;   
  4.   margin50px auto;   
  5.   positionrelative;   
  6.   border:1px solid #ddd;   
  7. }  

图解CSS3制作圆环形进度条的实例教程

接下来我将在这个容器里再放两个矩形,每个矩形都占一半:

XML/HTML Code复制内容到剪贴板
  1. <div class="circleProgress_wrapper">  
  2.         <div class="wrapper right">  
  3.             <div class="circleProgress rightcircle"></div>  
  4.         </div>  
  5.         <div class="wrapper left">  
  6.             <div class="circleProgress leftcircle"></div>  
  7.         </div>  
  8.  </div>  
CSS Code复制内容到剪贴板
  1. .wrapper{   
  2.   width100px;   
  3.   height200px;   
  4.   positionabsolute;   
  5.   top:0;   
  6.   overflowhidden;   
  7. }   
  8. .rightright{   
  9.   rightright:0;   
  10. }   
  11. .left{   
  12.   left:0;   
  13. }  

图解CSS3制作圆环形进度条的实例教程

这里重点说一下.wrapper 的overflow:hidden; 起着关键性作用。这两个矩形都设置了溢出隐藏,那么当我们去旋转矩形里面的圆形的时候,溢出部分就被隐藏掉了,这样我们就可以达到我们想要的效果。

从html结构也已看到,在左右矩形里面还会各自有一个圆形,先讲一下右半圆:

CSS Code复制内容到剪贴板
  1. .circleProgress{   
  2.   width160px;   
  3.   height160px;   
  4.   border:20px solid transparent;   
  5.   border-radius: 50%;   
  6.   positionabsolute;   
  7.   top:0;   
  8. }   
  9. .rightcircle{   
  10.   border-top:20px solid green;   
  11.   border-right:20px solid green;   
  12.   rightright:0;   
  13. }  

图解CSS3制作圆环形进度条的实例教程

可以看到,效果已经出来了,其实本来是一个半圆弧,但由于我们设置了上边框和右边框,所以上边框有一半溢出而被隐藏了,所以我们可以通过旋转得以还原:

CSS Code复制内容到剪贴板
  1. .circleProgress{   
  2.   width160px;   
  3.   height160px;   
  4.   border:20px solid transparent;   
  5.   border-radius: 50%;   
  6.   positionabsolute;   
  7.   top:0;   
  8.   -webkit-transform: rotate(45deg);   
  9. }  

图解CSS3制作圆环形进度条的实例教程

所以只要旋转自己想要的角度就可以实现任意比例的进度条。接下来把左半圆弧也实现,变成一个全圆:

CSS Code复制内容到剪贴板
  1. .leftcircle{   
  2.     border-bottom:20px solid green;   
  3.     border-left:20px solid green;   
  4.     left:0;   
  5. }  

图解CSS3制作圆环形进度条的实例教程

紧接着,就是让它动起来,原理是这样的, 先让右半圆弧旋转180度,再让左半圆弧旋转180度 ,这样,两个半圆弧由于先后都全部溢出而消失了,所以看起来就是进度条再滚动的效果:

CSS Code复制内容到剪贴板
  1.     .rightcircle{   
  2.   border-top:20px solid green;   
  3.   border-right:20px solid green;   
  4.   rightright:0;   
  5.   -webkit-animation: circleProgressLoad_right 5s linear infinite;   
  6. }   
  7. .leftcircle{   
  8.   border-bottom:20px solid green;   
  9.   border-left:20px solid green;   
  10.   left:0;   
  11.   -webkit-animation: circleProgressLoad_left 5s linear infinite;   
  12. }   
  13. @-webkit-keyframes circleProgressLoad_right{   
  14.   0%{   
  15.     -webkit-transform: rotate(45deg);   
  16.   }   
  17.   50%,100%{   
  18.     -webkit-transform: rotate(225deg);   
  19.   }   
  20. }   
  21. @-webkit-keyframes circleProgressLoad_left{   
  22.   0%,50%{   
  23.     -webkit-transform: rotate(45deg);   
  24.   }   
  25.   100%{   
  26.     -webkit-transform: rotate(225deg);   
  27.   }   
  28. }  

图解CSS3制作圆环形进度条的实例教程

当然,我们只需要调整一下角度就可以实现反向的效果:

CSS Code复制内容到剪贴板
  1.     .circleProgress{   
  2.   width160px;   
  3.   height160px;   
  4.   border:20px solid transparent;   
  5.   border-radius: 50%;   
  6.   positionabsolute;   
  7.   top:0;   
  8.   -webkit-transform: rotate(-135deg);   
  9. }   
  10. @-webkit-keyframes circleProgressLoad_right{   
  11.   0%{   
  12.     -webkit-transform: rotate(-135deg);   
  13.   }   
  14.   50%,100%{   
  15.     -webkit-transform: rotate(45deg);   
  16.   }   
  17. }   
  18. @-webkit-keyframes circleProgressLoad_left{   
  19.   0%,50%{   
  20.     -webkit-transform: rotate(-135deg);   
  21.   }   
  22.   100%{   
  23.     -webkit-transform: rotate(45deg);   
  24.   }   
  25. }  

图解CSS3制作圆环形进度条的实例教程

好的,接下来就是奔向最终效果了,正如我们一开始看到的那样,有点像我们使用360卫士清理垃圾时的类似效果,当然不是很像啦:

CSS Code复制内容到剪贴板
  1.     .circleProgress_wrapper{   
  2.   width200px;   
  3.   height200px;   
  4.   margin50px auto;   
  5.   positionrelative;   
  6.   border:1px solid #ddd;   
  7. }   
  8. .wrapper{   
  9.   width100px;   
  10.   height200px;   
  11.   positionabsolute;   
  12.   top:0;   
  13.   overflowhidden;   
  14. }   
  15. .rightright{   
  16.   rightright:0;   
  17. }   
  18. .left{   
  19.   left:0;   
  20. }   
  21. .circleProgress{   
  22.   width160px;   
  23.   height160px;   
  24.   border:20px solid rgb(232, 232, 12);   
  25.   border-radius: 50%;   
  26.   positionabsolute;   
  27.   top:0;   
  28.   -webkit-transform: rotate(45deg);   
  29. }   
  30. .rightcircle{   
  31.   border-top:20px solid green;   
  32.   border-right:20px solid green;   
  33.   rightright:0;   
  34.   -webkit-animation: circleProgressLoad_right 5s linear infinite;   
  35. }   
  36. .leftcircle{   
  37.   border-bottom:20px solid green;   
  38.   border-left:20px solid green;   
  39.   left:0;   
  40.   -webkit-animation: circleProgressLoad_left 5s linear infinite;   
  41. }   
  42. @-webkit-keyframes circleProgressLoad_right{   
  43.   0%{   
  44.     border-top:20px solid #ED1A1A;   
  45.     border-right:20px solid #ED1A1A;   
  46.     -webkit-transform: rotate(45deg);   
  47.   }   
  48.   50%{   
  49.     border-top:20px solid rgb(232, 232, 12);   
  50.     border-right:20px solid rgb(232, 232, 12);   
  51.     border-left:20px solid rgb(81, 197, 81);   
  52.     border-bottom:20px solid rgb(81, 197, 81);   
  53.     -webkit-transform: rotate(225deg);   
  54.   }   
  55.   100%{   
  56.     border-left:20px solid green;   
  57.     border-bottom:20px solid green;   
  58.     -webkit-transform: rotate(225deg);   
  59.   }   
  60. }   
  61. @-webkit-keyframes circleProgressLoad_left{   
  62.   0%{   
  63.     border-bottom:20px solid #ED1A1A;   
  64.     border-left:20px solid #ED1A1A;   
  65.     -webkit-transform: rotate(45deg);   
  66.   }   
  67.   50%{   
  68.     border-bottom:20px solid rgb(232, 232, 12);   
  69.     border-left:20px solid rgb(232, 232, 12);   
  70.     border-top:20px solid rgb(81, 197, 81);   
  71.     border-right:20px solid rgb(81, 197, 81);   
  72.     -webkit-transform: rotate(45deg);   
  73.   }   
  74.   100%{   
  75.     border-top:20px solid green;   
  76.     border-right:20px solid green;   
  77.     border-bottom:20px solid green;   
  78.     border-left:20px solid green;   
  79.     -webkit-transform: rotate(225deg);   
  80.   }   
  81. }  

可以看到,其实就是多了一些改变不同边框颜色的动画而已,这个就给大家自己去实践吧! 主要还是利用两个矩形来完成这么一个圆形进度条效果,特别注意overflow这条规则,起着关键作用。

HTML / CSS 相关文章推荐
html5 sessionStorage会话存储_动力节点Java学院整理
Jul 06 HTML / CSS
20佳惊艳的HTML5应用程序示例分享
May 03 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
May 07 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
Jul 18 HTML / CSS
详解HTML5 录音的踩坑之旅
Dec 26 HTML / CSS
详解px单位html5响应式方案
Mar 08 HTML / CSS
如何用canvas实现在线签名的示例代码
Jul 10 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
Apr 07 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
使用HTML5加载音频和视频的实现代码
Nov 30 HTML / CSS
html5移动端禁止长按图片保存的实现
Apr 20 HTML / CSS
分享CSS盒子模型隐藏的几种方式
Feb 28 HTML / CSS
CSS中的字体大小设置属性总结
May 24 #HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
May 24 #HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
May 24 #HTML / CSS
CSS3中的Media Queries学习笔记
May 23 #HTML / CSS
详解CSS3的perspective属性设置3D变换距离的方法
May 23 #HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 #HTML / CSS
css 元素选择器的简单实例
May 23 #HTML / CSS
You might like
我的论坛源代码(七)
2006/10/09 PHP
PHP新手上路(七)
2006/10/09 PHP
php筛选不存在的图片资源
2015/04/28 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
Python使用django搭建web开发环境
2017/06/09 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
企业总经理助理岗位职责
2014/09/12 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
公司放假通知范文
2015/04/14 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript