canvas绘制环形进度条
<!DOCTYPE html>
<html >
<head>
<meta http-equiv="content-type" content="text/html" charset="utf-8">
<meta name="author" content="xuyunfei">
<meta name="description" content="">
<meta name="keywords" content="test,html">
<title>环形进度条</title>
</head>
<body>
</br></br></br></br> <div style="width:300px; height:300px; margin:20px auto">
<canvas id="canvas" width="300" height="300">
<p>抱歉,您的浏览器不支持canvas</p>
</canvas>
</div> <script type="text/javascript">
function toCanvas(id ,progress){
// canvas进度条
var canvas = document.getElementById(id),
ctx = canvas.getContext("2d"),
percent = progress, //最终百分比
circleX = canvas.width / 2, //中心x坐标
circleY = canvas.height / 2, //中心y坐标
radius = 100, //圆环半径
lineWidth = 5, //圆形线条的宽度
fontSize = 20; //字体大小
//两端圆点
// function smallcircle1(cx, cy, r) {
// ctx.beginPath();
// //ctx.moveTo(cx + r, cy);
// ctx.lineWidth = 1;
// ctx.fillStyle = '#06a8f3';
// ctx.arc(cx, cy, r,0,Math.PI*2);
// ctx.fill();
// }
// function smallcircle2(cx, cy, r) {
// ctx.beginPath();
// //ctx.moveTo(cx + r, cy);
// ctx.lineWidth = 1;
// ctx.fillStyle = '#00f8bb';
// ctx.arc(cx, cy, r,0,Math.PI*2);
// ctx.fill();
// } //画圆
function circle(cx, cy, r) {
ctx.beginPath();
//ctx.moveTo(cx + r, cy);
ctx.lineWidth = lineWidth;
ctx.strokeStyle = '#eee';
ctx.arc(cx, cy, r, 0, (Math.PI*2),true);
ctx.stroke();
} //画弧线
function sector(cx, cy, r, startAngle, endAngle, anti) {
ctx.beginPath();
//ctx.moveTo(cx, cy + r); // 从圆形底部开始画
ctx.lineWidth = lineWidth; // 渐变色 - 可自定义
// var linGrad = ctx.createLinearGradient(
// circleX-radius-lineWidth, circleY, circleX+radius+lineWidth, circleY
// );
// linGrad.addColorStop(0.0, '#06a8f3');
//linGrad.addColorStop(0.5, '#9bc4eb');
// linGrad.addColorStop(1.0, '#00f8bb');
// ctx.strokeStyle = linGrad;
ctx.strokeStyle = 'red'; //圆弧两端的样式
ctx.lineCap = 'round'; //圆弧
// ctx.arc(
// cx, cy, r,
// -1.5,
// -1.5 + endAngle/100 * (Math.PI*5/3),
// false
// );
ctx.arc(
cx, cy, r,
(Math.PI*-1/2),
(Math.PI*-1/2) + endAngle/100 * (Math.PI*2),
false
);
ctx.stroke();
} //刷新
function loading() {
if (process >= percent) {
// clearInterval(circleLoading);
process = 0.0;
} //清除canvas内容
ctx.clearRect(0, 0, circleX * 2, circleY * 2); //中间的字
ctx.font = fontSize + 'px April';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillStyle = '#999';
ctx.fillText(parseFloat(process).toFixed(0) + '%', circleX, circleY); //圆形
circle(circleX, circleY, radius); //圆弧
sector(circleX, circleY, radius, (Math.PI*-1/2), process);
//两端圆点
// smallcircle1(150+Math.cos(2*Math.PI/360*120)*100, 150+Math.sin(2*Math.PI/360*120)*100, 5);
// smallcircle2(150+Math.cos(2*Math.PI/360*(120+process*3))*100, 150+Math.sin(2*Math.PI/360*(120+process*3))*100, 5);
//控制结束时动画的速度
// if (process / percent > 0.90) {
// process += 0.30;
// } else if (process / percent > 0.80) {
// process += 0.55;
// } else if (process / percent > 0.70) {
// process += 0.75;
// } else {
process += 1.0;
// }
} var process = 0.0; //进度
var circleLoading = window.setInterval(function () {
loading();
}, 1000); } //第二部分,调用封装好的代码:
toCanvas('canvas',100); </script>
</body>
</html>
canvas绘制环形进度条的更多相关文章
- html5 canvas绘制环形进度条,环形渐变色仪表图
html5 canvas绘制环形进度条,环形渐变色仪表图 在绘制圆环前,我们需要知道canvas arc() 方 ...
- canvas 绘制环形进度条
结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...
- canvas绘制圆形进度条(或显示当前已浏览网页百分比)
使用canvas绘制圆形进度条,或者是网页加载进度条 或者是显示你浏览了本网页多少-- 由于个浏览器的计算差异,打开浏览器时 初始值有所不同,但是当拉倒网页底部时,均显示100%. 兼容性:测试浏览器 ...
- Canvas实现环形进度条
Canvas实现环形进度条 直接上代码: <canvas width="200" height="200" >60%</canvas> ...
- canvas 绘制圆形进度条
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用canvas实现环形进度条
html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- CSS3绘制环形进度条
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- canvas环形进度条
<style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...
- iOS带动画的环形进度条(进度条和数字同步)
本篇写的是实现环形进度条,并带动画效果,要实现这些,仅能通过自己画一个 方法直接看代码 为了方便多次调用,用继承UIView的方式 .m文件 #import <UIKit/UIKit.h> ...
随机推荐
- bash配色
Table of Contents PS1格式 基本格式 其它可能的格式 PS1配色方案 配置文件 bash的命令提示符和终端外观由环境变量PS1定义 PS1格式 基本格式 \u 显示当前用户名 \h ...
- 201671010142 2017-2 《java第十一章学习感悟》
事件处理基础 事件源,事件监听器,事件监听器 监听器接口的实现,监听器对象所属类必须实现与事件源相对应的接口,即必须提供接口中方法的实现. 适配器类 当程序用户试图关闭一个框架窗口时,Jframe对 ...
- python入门(三)
一.判断(精简代码) 非空为真,非0为真# 不为空的话就是true,是空的话就是false# 只要不是0就是true,是0就是falsea=[]#list也是假的b={}#字典也是假的c=0 #也是假 ...
- Java面试题之多线程打印
概述 作为程序员经常在面试的时候遇到多线程的问题,我印象比较深刻的就是下面这道题:写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z.打印顺序为12A34B56C……5152Z.看这个题目已 ...
- Asp .Net Core Spa (一) - 入门
第一次写文章, 很久之前就想写来着了, 文章哪里不清楚的, 也请多多提出意见. 最近发现用 .net core + spa (single page application) 这个组合的人也变多了, ...
- Linux安装软件、python开发环境
软件安装与卸载 更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手:iOS手机上可以下载软件的AppSt ...
- python基础13_zip_import
继续内置函数,zip函数被比喻成拉链,将两边的齿对应起来. #!/usr/bin/env python # coding:utf-8 ## 比喻像个拉链,将两边对应起来. # 多出来的部分,不作处理. ...
- 【转】Android-Input 触控笔
https://source.android.com/devices/accessories/stylus 触控笔 Android 6.0 及更高版本支持蓝牙 (BT).蓝牙低功耗 (BTLE) 或 ...
- js判断字段是否为空 isNull
js判断字段是否为空 isNull //在js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true .//为空判断函数f ...
- vuex核心
最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...