如何用HTML5写个进度环插件,代码是什么
Admin 2022-08-27 群英技术资讯 766 次浏览
这篇文章主要讲解了“如何用HTML5写个进度环插件,代码是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。前几天做了一个进度条的插件。今天我用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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章带大家了解下CSS 中的 transition (过渡) 和 transform (动画) 属性,这两个属性的参数确实比较复杂,它们可以做出 CSS 的一些基础动画效果,平移,旋转,倾角......等等,这些也是我早期学习 CSS 的难记易忘之处,今天给大家详细总结出来。
今天给大家分享的是怎样用css实现文字轮播效果的内容,本文实现文字轮播效果还是比较常见的,例如商店的门头广告牌,那么这一文字无限轮播效果是怎样做的呢?感兴趣的朋友接下来跟随小编一起看看吧。
CSS重置是什么?简单的说就是重置浏览器的CSS默认属性。为什么要重置它,有什么作用?因为浏览器的品种很多,每个浏览器的默认样式也是不同的,比如<button>标签,在IE浏览器、Firefox浏览器以及Safari浏览器中的样式都是不同的,所以,通过重置button标签的CSS属性,然后再将它统一定义,就可以产生相同的显示效果。 CSS重置的内容是什么?最常见的莫过于这
这篇文章给大家分享的是用CSS怎样实现头像图片的弹出效果的示例,实现效果如果,鼠标移过有图像弹出来的效果,小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
table表格设置边框后的重叠问题table{ border-spacing: 0; border-collapse: collapse;}table td { border: 1px solid #000; padding: 20px 30px;}在table表格中
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008