首页 > 其他 > 详细

环形加载进度条

时间:2015-11-28 23:16:47      阅读:500      评论:0      收藏:0      [点我收藏+]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        body{ margin: 0; font-family: "arial";}
        #wrap{background: rgba(255, 0, 0, 0.38); width: 400px; height: 400px;}
    </style>
    
    <script>
        window.onload = function(){
            var svgSN = "http://www.w3.org/2000/svg";
            var oWrap = document.getElementById("wrap");
            var oSvg = document.getElementById("svg1");
            function createTag(tag, objAttr){
                var oTag = document.createElementNS(svgSN, tag);
                for(var attr in objAttr){
                    oTag.setAttribute(attr, objAttr[attr]);
                }
                return oTag;
            }
            
            var outerXY = [{x: 80, y: 200}];
            var innerXY = [{x: 130, y: 200}];
            var centX = 200;
            var centY = 200;
            var outerR = 120;
            var innerR = 70;
            var angle = 360;
            var agSum = 0;
            var agNum = 0;
            var timer = null;
            
            var oText = createTag(‘text‘, {‘x‘: centX, ‘y‘: centY + 13, ‘font-size‘: ‘30‘, ‘text-anchor‘: ‘middle‘, ‘fill‘: ‘#fff‘, ‘font-family‘: ‘arial‘});
            oText.innerHTML = agNum + "%";
            oSvg.appendChild(oText);
            
            for(var i=0; i<angle; i++){
                agSum++;
                var outerX = centX - Math.cos(agSum * Math.PI / 180) * outerR;
                var outerY = centY - Math.sin(agSum * Math.PI / 180) * outerR;
                outerXY.push({x: outerX, y: outerY});
                
                var innerX = centX - Math.cos(agSum * Math.PI / 180) * innerR;
                var innerY = centY - Math.sin(agSum * Math.PI / 180) * innerR;
                innerXY.push({x: innerX, y: innerY});
            }
            
            var oPath = createTag(‘path‘, {});
            oSvg.appendChild(oPath);
            var json = {};
            
            timer = setInterval(function(){
                
                agNum++;
                json = {‘fill‘: ‘rgba(255, 255, 255, 0.6)‘, ‘d‘: ‘M‘ + outerXY[0].x + ‘ ‘ + outerXY[0].y + ‘A‘ + outerR + ‘ ‘ + outerR + ‘ 0 ‘ + (agNum > 180 ? 1 : 0) + ‘ 1 ‘ + outerXY[agNum].x + ‘ ‘ + outerXY[agNum].y + ‘L‘ + innerXY[agNum].x + ‘ ‘ + innerXY[agNum].y + ‘A‘ + innerR + ‘ ‘ + innerR + ‘ 0 ‘ + (agNum > 180 ? 1 : 0) + ‘ 0 ‘ + innerXY[0].x + ‘ ‘ + innerXY[0].y + ‘Z‘};
                
                for(var attr in json){
                    oPath.setAttribute(attr, json[attr]);
                }
                oText.innerHTML = Math.round(agNum/360 * 100) + "%";
                
                if(agNum == agSum){
                    clearInterval(timer);
                    alert("记载完成, 跳转页面");
                }
            }, 20);
            
            
        }
    </script>
</head>
<body>
    <div id="wrap">
        <svg id="svg1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
        </svg>
    </div>
</body>
</html>

效果展示:

技术分享

环形加载进度条

原文:http://www.cnblogs.com/jiechen/p/5003645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!