CSS3实现炫酷进度条

Author Avatar
Peipei Wong 6月 10, 2016
  • 在其它设备中阅读本文章

看了一个进度条很漂亮,所以自己试试看

<div class="load-container">
    <span class="run"></span>
    <div class="meter">0</div>
</div>
* {
    margin: 0;
    padding: 0;
    font-family: 'microsoft yahei';
}
html,body {
    width: 100%;
    height: 100%;
    background-color: #222;
}
.load-container {
    width: 600px;
    height: 6px;
    margin: 0 auto;
    margin-top: 200px;
    background-image: -webkit-linear-gradient(left,#5bd8ff, #ff0000);
    border-radius: 5px;
    position: relative;
}
.run {
    position: absolute;
        width: 0px;
        height: 6px;
        right: 0px;
        background: #000;
        border-radius: 5px;
        animation: runnAnimation 10s linear;
}
@keyframes runnAnimation {
    0% {
        width: 600px;
    }
    100% {
        width: 0px;
    }
}
.run:after {
    content: "";
    display: block;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background-color: #f00;
    margin-left: -4px;
    margin-top: -4px;
    animation: destination 10s linear;
}
@keyframes destination {
    0% {
        background-color: #5bd8ff;
    }
    100% {
        background-color: red;
    }
}
.meter {
    float: right;
    margin-top: 10px;
        font-size: 40px;
        color: red;
        animation: fontColor 10s linear;
}
@keyframes fontColor {
    0% {
        color: #5bd8ff;
    }
    100% {
        color: red;
    }
}
.meter:after {
    content: "%"
}

```js
window.onload = function() {
var meter = document.querySelector(‘.meter’);
run(meter,100);

function run(el,time) {
    time = time ? time : 100;
    el = el ? el : document;
    var i = 0;
    var timer = setInterval(function() {
        if(i<100) {
            i++;
            el.innerHTML = i;
        } else {
            clearInterval(timer);
        }
    },time)
}

}

如果想要调整进度时间,需要修改css样式中animation的时间和js中的时间

PS:css未做前缀处理,所有测试都在最新谷歌浏览器下进行