canvas圆环进度
CSS:
<div class="circle">
<p><span id="loadedNum">0</span>%</p>
<div class="bg" id="bg"></div>
<canvas class="mask" width="204" height="204" ></canvas>
</div>
HTML:
<div class="circle">
<p><span id="loadedNum">0</span>%</p>
<div class="bg" id="bg"></div>
<canvas class="mask" width="204" height="204" ></canvas>
</div>
JS:
function inte(percent) {
if (percent < 0 || percent > 100) {
throw new Error('percent must be between 0 and 100');
return
}
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
ctx.lineWidth = 10;
ctx.strokeStyle = "red";
var angle = 0;
var timer;
(function draw() {
timer = requestAnimationFrame(draw);
ctx.beginPath();
ctx.arc(canvas.width / 2, canvas.height / 2, 100, 0, angle * Math.PI / 180, false);
angle++
var percentAge = parseInt((angle / 360) * 100)
if (angle > (percent / 100 * 360)) {
percentAge = percent
window.cancelAnimationFrame(timer);
};
document.querySelector('#loadedNum').innerHTML = percentAge;
ctx.stroke();
})()
}
window.onload = inte(20)
DEMO地址:http://codepen.io/jonechen/pen/vGWZQW
上面这个demo已经实现了百分比圆环进度,但是不足的是,使用了div和canvas两个元素的组合,可以再进化一下,HTML部分去掉div,都使用canvas来实现;见代码:
CSS:
*{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); }
HTML:
<div class="circle">
<canvas id="canvas_1" width="200" height="200"></canvas>
<canvas id="canvas_2" width="200" height="200"></canvas>
</div>
JS:
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 = percent
window.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);
DEMO地址:http://codepen.io/jonechen/pen/BKmOPX
canvas圆环进度的更多相关文章
- canvas绘制百分比圆环进度条
开发项目,PM会跟踪项目进度:完成某个事情,也可以设置一个完成的进度. 这里用canvas绘制一个简单百分比圆环进度条. 看下效果: 1. 动画方式 2. 静默方式 // 贴上代码,仅供参考 ...
- Vue/React圆环进度条
数据展示,一直是各行各业乐此不疲的需求,具体到前端开发行业,则是各种各种图表数据展示,各种表格数据展示,烦不胜烦(繁不胜繁)! 前几天刚做了折线图.柱状图.饼状图之类的图表数据展示效果,今天又碰到了类 ...
- android 圆环进度view
新建RoundProgressBar class RoundProgressBar : View { private val paint = Paint() var max = 100 //最大进度 ...
- 两种CSS3圆环进度条详解
晚上睡觉之前,我抽了1个多小时,研究了一下圆环进度条,结合从网上查阅的资料,我终于掌握了两种圆环的生成方法. 这次的效果就是单纯的CSS3效果,也没有写具体的JS,等以后有时间在好好整理一下吧~. 第 ...
- svg实现圆环进度条
开源实现:https://github.com/lugolabs/circles 自行实现:圆环与svg画布间剩的空间太多. <!DOCTYPE html> <html> &l ...
- css3 制作圆环进度条
引子 移动端做一个 loadiing 加载的图标,跟以往沿用的都不太一样,是一个圆环进度条,圆环进度条也就罢了,还得能用百分比控制. CSS3 实现圆环 demo 刚开始写这个圆环的时候是参照帖子上给 ...
- WPF Canvas实现进度条
原文:WPF Canvas实现进度条 先看效果图: 思路: 一个Canvas做背景,一个Canvas用来显示进度,图片放在显示进度的Canvas中,靠右设置为图片本身宽度一半的距离,视觉上实现以图片中 ...
- CSS3实现圆环进度条
摘要:圆环进度条被应用于各个场景,比如我们可以用来表示加载进度等.通常我们可以用 css3 的动画去实现. 详解 css3 实现圆环进度条 简单的画一个圆环,我们都知道如何使用 css 画一个圆环.( ...
- canvas 绘制动态圆环进度条
由于使用的是vue开发,所以就展示一下绘制函数好了,上图是效果图 drawMain(drawing_elem, percent, forecolor, bgcolor) { /* @drawing_e ...
随机推荐
- C# 通过this关键字来扩展方法
好处:不需要继承,对现有类型进行扩展 public static class ExtString { public static string myTest(this String str) { re ...
- debug版本和release版本的区别?
好久没有做web项目了,这项目完成了要发布网站,不好忘了 以前操作过的? 还好脑子还是有点印象 现还是 写个文档吧记录吧 免得 以后作别的了又忘了 那可不妙啊 网站发布步骤:1.先将
- POJ C程序设计进阶 编程题#1:寻找下标
编程题#1:寻找下标 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 已知一 ...
- 设置field的背景颜色以及对stylesheet的理解
今天遇到一个需求:在做页面输入验证的时候,如果用户没有输入某个项,那么这个项显示为红色,一直没头绪,也找peoplebook,发现field有一个style的方法,后来又在谷歌上找,终于找到了方法: ...
- 导出数据库数据制成Excel和txt
引用ICSharpCode.SharpZipLib.dll 1.编写压缩和解压代码 using System; using System.Collections.Generic; using Syst ...
- 反编译工具(.NET Reflector )
1.下载安装原程序,然后运行 Reflector.exe 2.运行注册机,点击 Generate 获得序列号 3.把序列号填写到 Reflector 软件上4.断开网络,点击 Activate 激活( ...
- linux下关于mysqldump备份的.sql导入数据库表数据丢失优化
直切正题 前2个随笔做了linux下自动备份,但是备份的.sql文件发现表数据丢失,原因是数据库太大我的数据库文件是804M,在用ftp拉去也会丢失数据 所以对db.sh备份数据库加一个压缩gizp ...
- 【转】利用DCC32实现命令行批量编译
*.dof [Compiler] A=1 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=1 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=0 U=0 ...
- Delphi 7 里没有加载的控件
在原来版本如D5.D6中使用的控件如Quickrep,FastNet等,在D7中仍然是保留的.只是Delphi没有将他们默认的安装到组件面版中来.这些控件包全部保存在Delphi目录的bin下,文件扩 ...
- Keil(MDK-ARM)使用教程(二)_菜单
Ⅰ.概述 接着上一篇来总结Keil(MDK-ARM)菜单相关的内容,详情请往下看. 关于Keil的下载.安装和新建工程我已将在前面做了详细的总结,不懂的可以参考我博客里面相关的文章.该文章是在新建好工 ...