zoukankan      html  css  js  c++  java
  • Html,Css,JavaScript制作圆形进度条的程序及基础解析

    感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18326.html

    1.说明:

    推荐指数:★★★★

    通俗易懂,小白一看就会,高手请飘过。

    学python也是需要懂一点Html、Css、JavaScript的基础知识的。

    建议使用vscode编辑器。

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    2.效果图1

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    3.代码:保存为html,用浏览器打开即可。

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果</title>  
    		<style type="text/css">  
    		*{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}  
    		</style>  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			<!--100%是显示百分数,动态显示由0~100-->  
    			<div class="text">100%</div>   
      
    		</div>  
    		  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>  
    		<script type="text/javascript">  
    			$(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})  
    		</script>  
    		  
    	</body>  
    </html>
    

    4.拆分法:把一个含有css和js(JavaScript)的html,拆掉三个文件,一个叫cirbar1.html,另外的叫:cirbar1.css和cirbar1.js文件,放在同一个文件夹内。这是./的意思,也可以指定文件夹。

    4.1 cirbar1.html的代码:

    <!DOCTYPE html>  
    <html>  
    	<head>  
    		<meta charset="UTF-8">  
    		<title>圆形百分比进度条效果v2</title>  
    		<!--如果是style type="text/css"这种直接在html中设置css,注意起始是*,不是点-->  
    		<!--style type="text/css"-->  
    		<link href="./cirbar1.css" rel="stylesheet" />  
    	</head>  
    	<body>  
    		<div class="bg">  
    			<div class="circle-right"></div>  
    			  
    			<div class="text">100%</div>   
    		</div>  
    		<!--这个外部js文件=jquery.min.js,不能少,否则不能动了-->  
    		<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"--></script>  
            <!--同样的,把写在html的js,新建一个cirbar1.js,复制下去,保存,这样子简洁很多-->  
    		<!--script type="text/javascript"-->  
    		<script src="./cirbar1.js"></script>  
    	</body>  
    </html>
    

    4.2 cirbar1.css的代码:

     *{  
    			margin: 0;  
    			padding: 0;  
    		}  
    		.bg{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			background: #ccc;  
    			position: relative;  
    			margin: 20px auto;  
    		}  
    		.circle-right, .circle-left, .mask-right, .mask-left{  
    			 200px;  
    			height: 200px;  
    			border-radius: 100%;  
    			position: absolute;  
    			top: 0;  
    			left: 0;  
    		}  
    		.circle-right, .circle-left{  
    			background: skyblue;  
    		}  
    		.mask-right, .mask-left{  
    			background: #ccc;  
    		}  
    		.circle-right, .mask-right{  
    			clip: rect(0,200px,200px,100px);  
    		}  
    		.circle-left, .mask-left{  
    			clip: rect(0,100px,200px,0);  
    		}  
    		.text{  
    			 160px;  
    			height: 160px;  
    			line-height: 160px;  
    			text-align: center;  
    			font-size: 34px;  
    			color: deepskyblue;  
    			border-radius: 100%;  
    			background: #fff;  
    			position: absolute;  
    			top: 20px;  
    			left: 20px;  
    		}
    

    4.3 cirbar1.js的代码:

     $(function(){				  
    				//获取百分比值  
    				var num = parseInt($('.text').html());  
    				  
    				//通过计时器来显示过渡的百分比进度  
    				var temp = 0;  
    				var timer = setInterval(function(){  
    					calculate(temp);  
    					//清除计时器结束该方法调用  
    					if(temp == num){  
    						clearInterval(timer);  
    					}  
    					temp++;  
    				},30)  
      
    				//改变页面显示百分比  
    				function calculate(value){  
    					//改变页面显示的值  
    					$('.text').html(value + '%');  
    					  
    					//清除上次调用该方法残留的效果  
    					$('.circle-left').remove();  
    					$('.mask-right').remove();  
    					  
    					//当百分比小于等于50  
    					if(value <= 50){  
    						var html = '';  
    						  
    						html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						  
    						//元素里添加子元素  
    						$('.circle-right').append(html);  
    					}else{  
    						value -= 50;  
    						var html = '';  
    						  
    						html += '<div class="circle-left">';  
    						html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';  
    						html += '</div>';  
    						  
    						//元素后添加元素  
    						$('.circle-right').after(html);  
    					}  
    				}  
    			})
    

    ==============================

    再来一个,不用外部js文件的圆形进度条

    顺带回顾一下相关知识。

    ==============================

    5.效果图

    Html、Css、JavaScript制作圆形进度条的代码及基础分析

    6.三个文件,放在同一个文件夹中

    6.1 cirbar.html代码:

    <!--第1步---声明html5-->  
    <!DOCTYPE html>   
      
    <!--第2步---html大框架-->  
    <html lang="en">  
      
    <!--第2-1步---head部分-->  
    <head>  
        <!--第2-1-1步---meta部分:声明字符编码格式:utf-8-->  
        <!--注意与python的第一行声明一样:# -*- coding: utf-8 -*-->  
        <meta charset="utf-8" />  
        <!--第2-1-2步---标题名称-->  
        <title>圆形进度条v1</title>  
        <!--注意:./代表同一个文件夹下,也就是css和js文件与本html文件放在同一个文件夹下-->  
        <!--第2-1-3步---导入css文件-->  
        <link href="./cirbar.css" rel="stylesheet" />  
    </head>  
      
    <!--第2-2步---body部分-->  
    <body>  
        <!--第2-2-1步---定义画布部分,注意没有逗号隔开,大小设置-->  
        <canvas class="canvas" id="canvas" width="400" height="400"></canvas>  
        <!--第2-2-2步---导入js文件部分-->  
        <script src="./cirbar.js"></script>  
      
    <!--注意收尾-->  
    </body>  
    <!--注意收尾-->  
    </html>
    

    6.2 cirbar.css代码:

    .canvas {  
                /*画布的背景颜色设置为:黑色*/  
                background:#303030;  
                  
            }
    

    6.3 cirbar.js代码:

    window.onload = function () {  
                var canvas = document.getElementById('canvas'),  //获取canvas元素  
                    context = canvas.getContext('2d'),  //获取画图环境,指明为2d  
                    centerX = canvas.width / 2,   //Canvas中心点x轴坐标  
                    centerY = canvas.height / 2,  //Canvas中心点y轴坐标  
                    rad = Math.PI * 2 / 100, //将360度分成100份,那么每一份就是rad度  
                    speed = 0.1; //加载的快慢就靠它了  
                //绘制红色外圈  
                function blueCircle(n) {  
                    context.save();  
                    context.strokeStyle = "	#1E90FF"; //随百分数转动的外圈的颜色为蓝色  
                    context.lineWidth = 3; //设置线宽  
                    context.beginPath(); //路径开始  
                    //注意-为顺时针,+为逆时针  
                    //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)  
                    //context.arc(centerX, centerY, 50, Math.PI / 2, Math.PI / 2 - n * rad, false);   
                    context.arc(centerX, centerY, 50, -Math.PI / 2, -(Math.PI / 2 - n * rad), false);   
                    context.stroke(); //绘制  
                    context.closePath(); //路径结束  
                    context.restore();  
                }  
                //绘制白色外圈,初始的白色外圈  
                function whiteCircle() {  
                    context.save();  
                    context.beginPath();  
                    // 下面百分数的字体颜色设置后上面的外圈的颜色竟然保持一样  
                    //context.strokeStyle = "#F8F8FF";  
                    context.arc(centerX, centerY, 50, 0, Math.PI * 2, false);  
                    context.stroke();  
                    context.closePath();  
                    context.restore();  
                }  
                //百分比文字绘制  
                function text(n) {  
                    context.save(); //save和restore可以保证样式属性只运用于该段canvas元素  
                    context.strokeStyle = "#7FFF00";//设置中间动态百分数的颜色  
                    context.font = "25px Arial"; //设置字体大小和字体  
                    context.textAlign = 'center';//字体水平居中  
                    context.textBaseline = 'middle';//字体垂直居中  
                    //绘制字体,并且指定位置  
                    context.strokeText(n.toFixed(0) + "%", centerX, centerY);  
                    context.stroke(); //执行绘制  
                    context.restore();  
                }  
                //循环获取  
                (function drawFrame() {  
                    window.requestAnimationFrame(drawFrame, canvas);  
                    context.clearRect(0, 0, canvas.width, canvas.height);  
                    whiteCircle();  
                    text(speed);  
                    blueCircle(speed);  
                    if (speed < 100) {  
                        //1可从后台获取值,也是从0~100,step为1,代表速度  
                        speed += 1;  
                    }  
                }());  
            }
    

    注意到6.3js文件与4.3js文件的区别了么?一个有:window.onload =,一个没有,且只有$和小括号,因为外部的就是文件定义了一部分功能。

  • 相关阅读:
    随笔
    洛谷
    洛谷
    洛谷
    (水题)洛谷
    洛谷
    (水题)洛谷
    洛谷
    (水题)洛谷
    (水题)洛谷
  • 原文地址:https://www.cnblogs.com/lihanlin/p/12618997.html
Copyright © 2011-2022 走看看