用Canvas画圆环百分比进度条

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>canvas圆环进度</title><link rel="stylesheet" href=""><style>*{padding: 0; margin: 0; }.circle{width: 200px;height: 200px;margin: 20em auto;position: relative;}canvas{display: block;margin: 0;position: absolute;background: white;left: 0;top: 0;}#canvas_1{z-index: 1 }#canvas_2{z-index: 2; background: transparent;transform:rotate(-90deg); }</style>
</head>
<body><div class="circle"><canvas id="canvas_1" width="200" height="200"></canvas><canvas id="canvas_2" width="200" height="200"></canvas></div><script>function inte(percent) {var canvas_1 = document.querySelector('#canvas_1');var canvas_2 = document.querySelector('#canvas_2');var ctx_1 = canvas_1.getContext('2d');var ctx_2 = canvas_2.getContext('2d');ctx_1.lineWidth = 10;ctx_1.strokeStyle = "#ccc";//画底部的灰色圆环ctx_1.beginPath();ctx_1.arc(canvas_1.width / 2, canvas_1.height / 2, canvas_1.width / 2 - ctx_1.lineWidth / 2, 0, Math.PI * 2, false);ctx_1.closePath();ctx_1.stroke();if (percent < 0 || percent > 100) {throw new Error('percent must be between 0 and 100');return}ctx_2.lineWidth = 10;ctx_2.strokeStyle = "#f90";var angle = 0;var timer;(function draw() {timer = requestAnimationFrame(draw);ctx_2.clearRect(0, 0, canvas_2.width, canvas_2.height)//百分比圆环ctx_2.beginPath();ctx_2.arc(canvas_2.width / 2, canvas_2.height / 2, canvas_2.width / 2 - ctx_2.lineWidth / 2, 0, angle * Math.PI / 180, false);angle++;var percentAge = parseInt((angle / 360) * 100)if (angle > (percent / 100 * 360)) {percentAge = percentwindow.cancelAnimationFrame(timer);};ctx_2.stroke();ctx_2.closePath();ctx_2.save();ctx_2.beginPath();ctx_2.rotate(90 * Math.PI / 180)ctx_2.font = '30px Arial';ctx_2.fillStyle = 'red';var text = percentAge + '%';ctx_2.fillText(text, 80, -90);ctx_2.closePath();ctx_2.restore();})()}window.onload = inte(60);</script>
</body>
</html>



效果图:试试吧~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java运算符 —(5)

1.算术运算符&#xff1a; - - * / % (前) (后) (前)-- (后)-- 【典型代码】 //除号&#xff1a;/ int num1 12; int num2 5; int result1 num1 / num2; System.out.println(result1);//2 // %:取余运算 //结果的符号与被模数的符号相同 //开发中&#xff0c;经常使用%来…

利用SQL计算两个地理坐标(经纬度)之间的地表距离

两个地理坐标(经纬度)地表距离计算公式&#xff1a; 公式解释如下&#xff1a; Long1,Lat1表示A点经纬度&#xff0c;Long2,Lat2表示B点经纬度&#xff1b;aLat1–Lat2 为两点纬度之差&#xff0c;bLong1-Long2为两点经度之差&#xff1b;6378.137为地球半径&#xff0c;单位为…

HTTP 错误 404 - 文件或目录未找到 - 最终解决方法

问题描述&#xff1a;http错误404&#xff0d;文件或目录未找到问题原因&#xff1a;我遇到的情况是&#xff0c;先按装了.NET&#xff0c;后装的IIS&#xff1b;不确定其他原因也会不会产生类似错误。&#xff08;如果有&#xff0c;希望大家能贴出更多的原因&#xff0c;方便…

java流程控制及控制键盘输出文字 —(6)

1.if-else条件判断结构 1.1. 结构一&#xff1a; if(条件表达式){ 执行表达式 } 结构二&#xff1a;二选一 if(条件表达式){ 执行表达式1 }else{ 执行表达式2 } 结构三&#xff1a;n选一 if(条件表达式){ 执行表达式1 }else if(条件表达式){ 执行表达式2 }else if(条件表达式…

自执行匿名函数剖析整理

格式&#xff1a;&#xff08;function(){//代码})();解释&#xff1a;这是相当优雅的代码&#xff08;如果你首次看见可能会一头雾水&#xff1a;&#xff09;&#xff09;&#xff0c;包围函数&#xff08;function(){})的第一对括号向脚本返回未命名的函数&#xff0c;随后一…

爬虫界又出神器|一款比selenium更高效的利器

提起selenium想必大家都不陌生&#xff0c;作为一款知名的Web自动化测试框架&#xff0c;selenium支持多款主流浏览器&#xff0c;提供了功能丰富的API接口&#xff0c;经常被我们用作爬虫工具来使用。但是selenium的缺点也很明显&#xff0c;比如速度太慢、对版本配置要求严苛…

java数组 —(7)

* 1.数组的理解&#xff1a;数组(Array)&#xff0c;是多个相同类型数据一定顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c; 并通过编号的方式对这些数据进行统一管理。 * 2.数组相关的概念&#xff1a; 数组名 元素 角标、下标、索引 数组的长度&#xff1a;元素…

bootstrap按钮的边框问题 去除

问题&#xff1a; 用bootstrap做的按钮&#xff0c;点击后&#xff0c;都会出现边框&#xff0c;请问如何去除&#xff1f; .btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus {outline: none; }还要去除阴影添…

C#一些面试知识题

1.简述 private、 protected、 public、internal 修饰符的访问权限答&#xff1a;private&#xff1a;私有成员, 在类的内部才可以访问(只能从其声明上下文中进行访问)。 protected&#xff1a;保护成员&#xff0c;该类内部和从该类派生的类中可以访问。 Friend&#xff1a;友…

vue加载时闪现模板语法-处理方法

问题&#xff1a;使用VUE时&#xff0c;页面加载瞬间&#xff0c;会闪现模板语法&#xff0c;例如{{ item.name }}等 解决办法&#xff1a; 1、可以通过VUE内置的指令v-cloak解决这个问题&#xff08;推荐&#xff09; 具体实现&#xff1a; <ul v-cloak v-for"ite…

java数组 —(8)

1.数组的创建与元素赋值&#xff1a; 杨辉三角&#xff08;二维数组&#xff09;、回形数&#xff08;二维数组&#xff09;、6个数&#xff0c;1-30之间随机生成且不重复。 2.针对于数值型的数组&#xff1a; 最大值、最小值、总和、平均数等 3.数组的赋值与复制 int[] a…

idea启动tomcat时报错:Error during artifact deployment. See server log for details.

Error during artifact deployment. See server log for details. 这个很多人都找不出来&#xff0c;原因无非2个&#xff1a; 一、jar 包有有些没能识别&#xff0c;tomcat没有配置好&#xff01; 二、这个一般代码错了&#xff1a; 除了看 server 的报错&#xff0c;别忘了看…

java运算符 —(9)

1.理解&#xff1a; ① 定义在java.util包下。 ② Arrays:提供了很多操作数组的方法。 2.使用&#xff1a; //1.boolean equals(int[] a,int[] b):判断两个数组是否相等。int[] arr1 new int[]{1,2,3,4};int[] arr2 new int[]{1,3,2,4};boolean isEquals Arrays.equals(a…

css 三角角标样式

.sanjiao {width: 0px;height: 0px;overflow: hidden;border-width: 100px;border-color: red transparent transparent transparent; border-style: solid dashed dashed dashed; }

leetcode 279 四平方定理

可以用四平方和定理&#xff1a;任意一个正整数都可以表示为4个以内整数的平方和。 如果一个数含有因子4&#xff0c;那么我们可以把4都去掉&#xff0c;并不影响结果。比如&#xff1a;8去掉4&#xff0c;12去掉3&#xff0c;返回的结果都相同。 如果一个数除以8余7&#xff0…

java类与对象 —(10)

1.面向对象学习的三条主线&#xff1a; 1.Java类及类的成员&#xff1a;属性、方法、构造器&#xff1b;代码块、内部类2.面向对象的大特征&#xff1a;封装性、继承性、多态性、(抽象性)3.其它关键字&#xff1a;this、super、static、final、abstract、interface、package、…

RESTful API 编写规范

基于一些不错的RESTful开发组件&#xff0c;可以快速的开发出不错的RESTful API&#xff0c;但如果不了解开发规范的、健壮的RESTful API的基本面&#xff0c;即便优秀的RESTful开发组件摆在面前&#xff0c;也无法很好的理解和使用。下文Gevin结合自己的实践经验&#xff0c;整…

Python2与Python3的区别

Python2与Python3的区别 1) 核心类差异 Python3 对 Unicode 字符的原生支持。 Python2 中使用 ASCII 码作为默认编码方式导致 string 有两种类型 str 和 unicode&#xff0c;Python3 只 支持 unicode 的 string。Python2 和 Python3 字节和字符对应关系为&#xff1a; python2p…

JavaScript-内存空间

深入了解js这门语言后&#xff0c;才发现它有着诸多众所周知的难点&#xff08;例如&#xff1a;闭包、原型链、内存空间等&#xff09;。有的是因为js的设计缺陷导致的&#xff0c;而有的则是js的优点。不管如何&#xff0c;总需要去学会它们&#xff0c;在学习过程中我觉得只…

java类的结构1: 属性 —(11)

类的设计中&#xff0c;两个重要结构之一&#xff1a;属性 对比&#xff1a;属性 vs 局部变量 1.相同点&#xff1a; 1.1 定义变量的格式&#xff1a;数据类型 变量名 变量值1.2 先声明&#xff0c;后使用1.3 变量都其对应的作用域 2.不同点&#xff1a; 2.1 在类中声明的…