当前位置:   article > 正文

用CSS3实现动画进度条_css3实现进度条动画

css3实现进度条动画

 CSS3的新特性为我们实现漂亮的进度条扫清了障碍,我们可以完全不需要任何图片和简单的Javascript代码就可以构建。

一、第一个例子

    效果图:

    Demo地址:http://namepk.sinaapp.com/demo/progress.html

1、  基本的HTML

    HTML代码非常简单:

[c-sharp]  view plain copy
  1. <div id="loading-status">  
  2.        <div id="precent"></div>  
  3. </div>  
 

    loading-status表示外层的容器,precent表示进度条。

2、  CSS代码

[c-sharp]  view plain copy
  1. #loading-status {  
  2.        width: 300px;  
  3.        border: 1px #669CB8 solid;  
  4.        -webkit-box-shadow: 0px 2px 2px #D0D4D6;  
  5.        height: 15px;  
  6.        -webkit-border-radius: 10px;  
  7.        background: -webkit-gradient(linear, 0 0, 0 100%, from(#E1E9EE), to(white));  
  8.        padding: 1px;  
  9. }  
 

    我们为外层容器添加了边框、圆角、阴影和渐变背景,效果如下图所示:

    进度条的CSS代码如下:

[c-sharp]  view plain copy
  1. #process {  
  2.        background: -webkit-gradient(linear, 0 0, 0 100%, from(#7BC3FF), color-stop(0.5,#42A9FF), to(#7BC3FF));  
  3.        width: 0%;  
  4.        height: 100%;  
  5.        -webkit-border-radius: 10px;  
  6. }  
 

    将width修改为10%可以看到效果:

3、动画

    通过控制width的百分比就可以控制进度条的显示,动画用CSS3的animation或者transition都可以实现,这里我们选择animation:

[c-sharp]  view plain copy
  1. #process {  
  2.        background: -webkit-gradient(linear, 0 0, 0 100%, from(#7BC3FF), color-stop(0.5,#42A9FF), to(#7BC3FF));  
  3.        width: 0%;  
  4.        height: 100%;  
  5.        -webkit-border-radius: 10px;  
  6.        -webkit-transition: width 1s ease-in-out;  
  7. }  
 

    然后我们通过Javascript来控制precent元素的宽度就可以实现进度条的动画效果了:

[c-sharp]  view plain copy
  1. Jquery: $(‘#precent’).width(‘80%’)  
  2. Javascript: document.getElementById(‘precent’).style.width = ‘80%’  
 

二、第二个例子

    下面我们实现一个更为复杂一点的进度条:

    Demo地址:http://namepk.sinaapp.com/demo/progress.html

1、基本的HTML

[c-sharp]  view plain copy
  1. <div class="box animate">  
  2.        <span>  
  3.               <span></span>  
  4.        </span>  
  5. </div>  
 

    一共是三个元素。

2、  CSS样式

[c-sharp]  view plain copy
  1. .box {  
  2.        height: 20px;  
  3.        position: relative;  
  4.        background: hsl(0, 0%, 35%);  
  5.        -webkit-border-radius: 15px;  
  6.        padding: 6px;  
  7.        -webkit-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3);  
  8.        width: 300px;  
  9. }  
 

    外框样式如下所示:


[c-sharp]  view plain copy
  1. .box > span {  
  2.        display: block;  
  3.        height: 100%;  
  4.        -webkit-border-top-right-radius: 8px;  
  5.        -webkit-border-bottom-right-radius: 8px;  
  6.        -webkit-border-top-left-radius: 15px;  
  7.        -webkit-border-bottom-left-radius: 15px;  
  8.        background-image: -webkit-gradient(linear, left bottom, left top,      color-stop(0, #63DE4E), color-stop(1, #34A702));  
  9.        -webkit-box-shadow: inset 0 2px 9px  rgba(255,255,255,0.3), inset 0 -2px 6px rgba(0,0,0,0.4);  
  10.        position: relative;  
  11.        overflow: hidden;  
  12. }  
 

    基本进度条样式如下所示:

    为内层的span定义的样式如下,主要是设定了一个渐变的背景。

[c-sharp]  view plain copy
  1.               .animate > span > span {  
  2.                      content: "";  
  3.                      position: absolute;  
  4.                      top: 0;  
  5. left: 0;  
  6. bottom: 0;  
  7. right: 0;  
  8.                      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));  
  9.                      z-index: 2;  
  10.                      -webkit-border-top-right-radius: 8px;  
  11.                      -webkit-border-bottom-right-radius: 8px;  
  12.                      -webkit-border-top-left-radius: 20px;  
  13.                      -webkit-border-bottom-left-radius: 20px;  
  14.                      overflow: hidden;  
  15.               }  
 

    样式如下:

    我们还需要添加一个属性:

[c-sharp]  view plain copy
  1. -webkit-background-size: 40px;  
 

    现在效果如下图所示:

3、  动画

    动画我们通过改变background-position来实现。代码如下:

[c-sharp]  view plain copy
  1. .animate > span span {  
  2.        content: "";  
  3.        position: absolute;  
  4.        top: 0; left: 0; bottom: 0; right: 0;  
  5.        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));  
  6.        z-index: 2;  
  7.        -webkit-background-size: 40px;  
  8.        -webkit-animation: move 2s linear infinite;  
  9.        -webkit-border-top-right-radius: 8px;  
  10.        -webkit-border-bottom-right-radius: 8px;  
  11.        -webkit-border-top-left-radius: 20px;  
  12.        -webkit-border-bottom-left-radius: 20px;  
  13.        overflow: hidden;  
  14. }  
  15.   
  16. @-webkit-keyframes move {  
  17.     0% {  
  18.        background-position: 0 0;  
  19.     }  
  20.     100% {  
  21.        background-position: 50px 50px;  
  22.     }  
  23. }  
 

    最终的效果如下:

    写在最后:由我担任作者的一本HTML5入门书籍正在策划和写作中,大家可以期待一下,呵呵。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/ex123/article/detail/60369
推荐阅读
相关标签
  

闽ICP备14008679号