如何用HTML5写个进度环插件,代码是什么
Admin 2022-08-27 群英技术资讯 565 次浏览
前几天做了一个进度条的插件。今天我用HTML5的arc做一个简单的进度环的插件。
代码演示
事实上非常easy的。相同,我们先用一个实例:
配置js代码
var setting = {
id: "canvas",//画布id 不可省略
raduis:"30",//进度环半径
x: 90,//进度环圆心x坐标
y: 90,//进度环圆心y坐标
width: 10,//进度环宽度
time: 100,//进度刷新时间间隔 可省略 默觉得1000毫秒
foregroundColor: "black",
backgroundColor: "blue",
runFunction: function () {
return 2;
},//每次变化的速率 度数
endFunction: function () {//结束时调用的函数
//alert("end");
},
startFunction: function () {//结束时调用的函数
//alert("start");
},
showText: true
}
初始化
initProgressRing(setting);
html代码
<div class="context">
<canvas id="canvas"></canvas>
</div>
这样就完毕了一个简单的进度环。当然。得引入initProgressRing.js
script type="text/javascript" src="initProgressRing.js"></script>
以下我们看initProgressRing怎么实现的呢?
事实上非常easy。不说多了。直接上代码
function initProgressRing(setting) {
var initProgressRing = {};
initProgressRing.all = 0;
initProgressRing.startY = Math.PI;
initProgressRing.endY1 = initProgressRing.startY + 2 * Math.PI;
initProgressRing.endY2 = initProgressRing.startY - 2 * Math.PI;
//调用開始函数
if (setting.startFunction) {
setting.startFunction();
}
//初始化默认值函数
initProgressRing.initSet = function (set) {
if (!set.counterclockwise) {
set.counterclockwise = false;
}
if (!set.time) {
set.time = 1000;
}
if (!set.width) {
set.width = 10;
}
if (!set.backgroundColor) {
set.color = "red";
}
if (!set.foregroundColor) {
set.color = "blue";
}
if (!set.radius) {
set.radius = 10;
}
return set;
}
//初始化默认值
setting = initProgressRing.initSet(setting);
//刷新函数
initProgressRing.remainTime = function () {
initProgressRing.all += setting.runFunction();
initProgressRing.startY += 2 * Math.PI / 360 * setting.runFunction();
initProgressRing.text = Math.round((initProgressRing.all / 360 * 10000) / 100) + "%";
//推断结束
if (initProgressRing.startY > initProgressRing.endY1 || initProgressRing.startY < initProgressRing.endY2) {
initProgressRing.text = "100%";
clearInterval(initProgressRing.run);
if (setting.endFunction) {
setting.endFunction();//调用结束函数
}
}
initProgressRing.draw(setting.x, setting.y, setting.raduis, setting.width, setting.backgroundColor, setting.foregroundColor, setting.counterclockwise);
}
//初始化画布,调用刷新函数
if (setting.id) {
initProgressRing.canvas = document.getElementById(setting.id);
console.log(setting.id);
initProgressRing.context = initProgressRing.canvas.getContext("2d");
initProgressRing.run = setInterval(initProgressRing.remainTime, setting.time);//1000为1秒钟
} else {
alert("初始化错误,没有id");
}
//画进度条
initProgressRing.draw = function draw(x, y, raduis, width, backgroundColor, foregroundColor, counterclockwise) {
//清除内容
initProgressRing.context.clearRect(0, 0, canvas.width, canvas.height);
initProgressRing.context.lineWidth = width;
initProgressRing.context.beginPath();
initProgressRing.context.strokeStyle = backgroundColor;
initProgressRing.context.arc(x, y, raduis, 0, 2 * Math.PI, false);
initProgressRing.context.stroke();
initProgressRing.context.beginPath();
initProgressRing.context.strokeStyle = foregroundColor;
initProgressRing.context.arc(x, y, raduis, Math.PI, initProgressRing.startY, counterclockwise);
initProgressRing.context.stroke();
if (setting.showText) {
console.log(initProgressRing.text);
initProgressRing.context.fillText(initProgressRing.text, x - 7, y+5, 40);
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
什么是盒子呢?拿下举例,我们可以把每个红框都比作一个盒子,他们可以是任意的HTML元素。盒子模型所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就...
本篇文章为大家介绍了关于html5 track标签的定义及其使用方法,还有关于html5 track标签的可选属性的一些描述,希望大家能都认真读完这篇文章。
/**@description:公共样式表*@author:LMD同学*@update:LMD同学(2018-05-2209:35)*/@charset"utf-8";*{margin:0px;padding:0px;}body{background:#FFFFFF;color:#333;font-family:"微软雅黑";fo
这篇文章主要介绍了在HTML5 localStorage中存储对象的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了Html5基于canvas实现电子签名并生成PDF文档,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008