需求是下图这样,是一个环形进度条。最前面还有个自定义的图标。搜了很多各种环形进度,前面有自定义图标的不多,记录一下

html文件代码:

首页

重新开始

$(function () {

var run = runCircle( //初始化转圈

{

obj: 'canvasThree2',

percent: 1

}

);

var reTimer;

$(".restart").click(function () {

var run = $("#canvasThree2").attr("data-run");

if (run == 0) {

clearTimeout(reTimer)

reTimer = setTimeout(function () {

runCircle()

}, 200)

} else {

clearTimeout(reTimer)

return;

}

})

})

zcircleMove.js代码:

function runCircle(){

var settings = {

obj: 'canvasThree2',

percent: 1

}

var defaultSetting={

url:'images/fire1.png', //飞机小图地址

obj:'', //场景添加的canvas id 名

percent:1, //圆环转动的百分比 0-1

outerColor:'#61b2f0', //外部圆环 渐变色

};

var option=$.extend({},defaultSetting,settings);

var imageUrl=option.url;

var obj=option.obj;

var percent=option.percent;

var outerColor=option.outerColor;

var preA=Math.PI/180;

var canvasC=document.getElementById(obj);

/*控制运动*/

var context=canvasC.getContext('2d');

var windowW=parseInt($(canvasC).parent().width());//根据canvas父元素的宽度来设置圆圈的宽度

var lineW0=5;

var R0;

var canvasW=windowW*1.5;//控制圈圈的宽度

R0=parseInt(canvasW/2-lineW0-4);

var ra=parseInt(canvasW/2-lineW0/2-5);

var canvasH=canvasW;

var rotateAngle=percent*360;

var rotataRadians=preA*rotateAngle;

canvasC.width = canvasW;

canvasC.height = canvasH;

var x=canvasC.width/2;

var y=canvasC.height/2;

var startAa=-Math.PI/2;

var startA=0;

var Timer;

var imageAir=new Image();

imageAir.src=imageUrl;

imageAir.οnlοad=CanvasApp;

function CanvasApp(){

var imgWidth=option.imgWidth||imageAir.width/2;

var imgHeight=option.imgHeight||imageAir.height/2;

console.log(imgWidth)

var imgX=-imgWidth/2-2;

var imgY=-imgHeight/2;

function drawScreen(){

if(startA

startA+=0.1;

}

context.setTransform(1,0,0,1,0,0);

context.fillStyle="#ffffff";//背景颜色

context.fillRect(0,0,canvasC.width,canvasC.height);

context.translate(x,y);

context.rotate(-Math.PI/2);

//外环

context.beginPath();

//50,50,25,100,100,100

context.strokeStyle = outerColor;

context.lineWidth=lineW0;

context.arc(0,0,R0,0,startA,false);

context.stroke();

context.closePath();

//画图

if(startAa

startAa+=0.1;

canvasC.setAttribute("data-run","1")

}else{

clearInterval(Timer);

canvasC.setAttribute("data-run","0")

}

context.save();

context.setTransform(1,0,0,1,0,0);

var ax=ra*Math.cos(startAa) ;

var ay=ra*Math.sin(startAa) ;

context.translate(x+ax,y+ay);

context.rotate(startAa);

context.drawImage(imageAir,imgX,imgY,imgWidth,imgHeight)

context.restore();

}

drawScreen();

Timer=setInterval(drawScreen,10)//控制转圈速度的

}

}

fire1.png就是进度条最前面的蓝色发光小圆圈

github地址:https://github.com/phebe111/circleMove/tree/master

代码来自https://www.17sucai.com/pins/23189.html这篇文章,我又删删减减成我需要的代码,如果想要更多功能,比如环形颜色渐变等,可以看原文

前端 圆形进度图_js圆形进度的实现,可以自定义进度图标相关推荐

  1. 前端 圆形进度图_Highcharts 圆形进度条式测量图

    Highcharts 圆形进度条式测量图 以下实例演示了圆形进度条式测量图. 我们在前面的章节已经了解了 Highcharts 基本配置语法.接下来让我们来看下其他的配置. 配置 chart.type ...

  2. QT自定义进度条-画圆盘

    目录 QT自定义进度条-画圆盘 六等分圆盘 QT自定义进度条-画圆盘 六等分圆盘 void PaintWidget::paintEvent(QPaintEvent *e) {QPainter pain ...

  3. ucharts 圆形进度图使用

    菜鸟成长之路 1.在官网上下载ucharts,引入至所需页面 参考文献:https://blog.csdn.net/m0_49529959/article/details/107770498?utm_ ...

  4. 圆形进度条(包括仿QQ图片加载进度图)

    原文:圆形进度条(包括仿QQ图片加载进度图) 源代码下载地址:http://www.zuidaima.com/share/1581277496822784.htm 以前找到的自定义圆形进度条

  5. Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果

    vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果 需求分析: 类似于大多数音乐播放器中等mini播放器控制按钮,显示播放进度,实时更新进度. progress-cir ...

  6. Android 之 ProgressDialog用法介绍(矩形进度条 和 圆形 进度条)

    2019独角兽企业重金招聘Python工程师标准>>> 布局文件: <LinearLayout xmlns:android="http://schemas.andro ...

  7. android自定义带进度条的圆形图片

    前言:在项目听新闻的改版中需要实现环绕圆形新闻图片的进度条功能,作为技术预备工作我就去看了一些网上的相关的原理,做了一个自定义带进度条的圆形图片的demo,并将这个实现写成文章发布出来,谁需要了可以进 ...

  8. echarts 三环圆环_echarts实现环形进度图

    //环形进度图 TgsChartsUtil.drawCircleLoadingChart = function(cfg){ var myChart = TgsChartsUtil.getChart(c ...

  9. Android圆形头像图Circle ImageView

    <Android圆形头像图Circle ImageView> 需要处理的原始图(pic): 使用CircleImageView处理后的图(作为头像): 现在很多的应用都有设置头像的功能,如 ...

最新文章

  1. 搞了半天,终于弄懂了TCP Socket数据的接收和发送,太难~
  2. linux kernel中的wait_for_completion和complete总结
  3. PostgreSQL 压缩包 在win7上安装
  4. vue方法调用失败后多次调用_浅析Vue中 computed / watch / methods的区别
  5. java jstack 工具_java命令之jstack工具
  6. Django单元测试
  7. Android 8.0 的部分坑及对应解决方法
  8. mongodb的常用增删改查命令:
  9. CISSP 重点知识点总结3
  10. 字节跳动不需要总部大楼
  11. VS2010提示未能正确加载包
  12. EasyPusher手机直播推送是如何实现后台直播推送的
  13. 日知录(16):CAD基础工具
  14. 无线智能蓝牙追踪防丢器
  15. 服务器购买之后要做什么(二)
  16. 回顾 2022 年 — 回顾 Elastic 这一年
  17. Nutz cnd.wrap传参
  18. 超详细Shell学习教程第二篇
  19. Project 2013设置节假日日历
  20. 20190221 beautiful soup 入门

热门文章

  1. LC729.我的日程表
  2. SolrSpringDataSolr
  3. 【ppt入门教程】PPT2013如何加上自己公司LOGO PPT中加上LOGO操作方法
  4. 多益网络校招 —— 二面hr面
  5. 前端缓存 (http缓存 与 本地缓存)
  6. linux shell tomcat 一键重启
  7. 菜单箭头旋转180度
  8. repost 分布式学习
  9. python给图片添加全屏水印(透明度/字体)
  10. JavaWeb毕业设计-蛋糕商城系统(idea可用)