CSS3實現圓形進度條(附源碼)

CSS3實現圓形進度條

原理

最外的正方形容器內,左右兩個矩形div各佔一半,設置超出隱藏。

左右矩形內分別有一個方形div,設置邊框圓角,一半邊框綠色(表示進度),形成半圓環。

通過計時器+css3旋轉左右圓環實現進度顯示。

效果

源碼 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>圓形進度條</title>
        <style>
            .circleProgress_wrapper {
                width: 200px;
                height: 200px;
                margin: 50px auto;
                position: relative;
            }
            
            p{
                width: 200px;
                height: 200px;
                line-height: 200px;
                text-align: center;
                font-size:24px;
                color: green;
            }

            .wrapper {
                width: 100px;
                height: 200px;
                position: absolute;
                top: 0;
                overflow: hidden;
            }

            .right {
                right: 0;
            }

            .left {
                left: 0;
            }

            .circleProgress {
                width: 160px;
                height: 160px;
                border: 20px solid #ccc;
                border-radius: 50%;
                position: absolute;
                top: 0;
            }

            .rightcircle {
                border-bottom: 20px solid green;
                border-left: 20px solid green;
                right: 0;
                transform: rotate(45deg);
            }

            .leftcircle {
                border-top: 20px solid green;
                border-right: 20px solid green;
                left: 0;
                transform: rotate(45deg);
            }

        </style>
    </head>
    <body>
        <div class="circleProgress_wrapper">
            <p><span class="process">0</span>%</p>
            <div class="wrapper right">
                <div class="circleProgress rightcircle"></div>
            </div>
            <div class="wrapper left">
                <div class="circleProgress leftcircle"></div>
            </div>
        </div>

        <script type="text/javascript">
            document.onclick = function() {
                var dom = document;
                var num_right = 45;
                var num_left = 45;
                var process_num=0;
                var timer = setInterval(function() {
                    if (num_right < 225) {
                        num_right++;
                        dom.getElementsByClassName("rightcircle")[0].style = "transform:rotate(" + num_right + "deg)";
                    } else {
                        if (num_left < 225) {
                            num_left++;
                            dom.getElementsByClassName("leftcircle")[0].style = "transform:rotate(" + num_left + "deg)";
                        } else {
                            process_num=100;
                            dom.getElementsByClassName("process")[0].innerHTML=process_num;
                            clearInterval(timer);
                        }
                    }    
                }, 100);
            }
        </script>
    </body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章