JS如何实现圆形进度条拖拽滑动

技术JS如何实现圆形进度条拖拽滑动JS如何实现圆形进度条拖拽滑动,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。效果展示半圆进度条效果圆形进度

射流研究…如何实现圆形进度条拖拽滑动,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

效果展示

半圆进度条效果

JS如何实现圆形进度条拖拽滑动

圆形进度条

JS如何实现圆形进度条拖拽滑动

代码实现

!doctypehtml

htmllang='en '

metachartset=' UTF-8 '/

meta http-equiv=' X-UA-Compatible '内容=' IE=edge,chrome=1'/

标题圆形进度条拖拽滑动/title

/head

身体

canvasId=' canvasId '宽度=' 400 '高度=' 400 '/canvasId

scripttype='text/javascript '

var canvas=文档。getelementbyid(' canvasId ');

varctx=画布。get context(' 2d ');

varox=200

varoy=200

varor=180

varbr=15

varmoveFlag=false

functionoffset(r,d){//根据弧度与距离计算偏移坐标

返回{x:-Math.sin(r)*d,y : ath。cos(r)* d };

};

函数绘图(n){ 0

ctx.clearRect(0,0,canvas.width,canvas。高度);

ctx.strokeStyle=' # 99a

CTX。线宽=5;

CTX。begin path();

ctx.arc(ox,oy,or,0,Math .PI,真);//半圆

//ctx.arc(ox,oy,or,0,2*Math .PI,真);//整圆

CTX。笔画();

ctx.strokeStyle=' # 69f

    ctx.lineWidth = 5;
        ctx.beginPath();
        ctx.arc(ox,oy,or,Math.PI,(n*2+0.5)*Math.PI,false);
        // ctx.arc(ox,oy,or,0.5*Math.PI,(n*2+0.5)*Math.PI,false);
        ctx.stroke();
        ctx.fillStyle = "#69f";
        ctx.font = "80px Arial";
        ctx.textAlign = "center";
        ctx.textBaseline = "middle";
        ctx.fillText(Math.round(n*100-25)+"%",ox,oy);
        ctx.fillStyle = "#00f";
        ctx.beginPath();
        var d =  offset(n*2*Math.PI,or);
        ctx.arc(ox+d.x,oy+d.y,br,0,2*Math.PI,true);
        ctx.fill();
    }
    var on = ("ontouchstart" in document)? {
        start: "touchstart", move: "touchmove", end: "touchend"
    } : {
        start: "mousedown", move: "mousemove", end: "mouseup"
    };
    function getXY(e,obj) {
        var et = e.touches? e.touches[0] : e;
        var x = et.clientX;
        var y = et.clientY;
        return {
            x : x - obj.offsetLeft + (document.body.scrollLeft || document.documentElement.scrollLeft),
            y : y - obj.offsetTop  + (document.body.scrollTop || document.documentElement.scrollTop)
        }
    }
    canvas.addEventListener(on.start, function(e) {
        moveFlag = true;
    }, false);
    canvas.addEventListener(on.move, function(e) {
        if (moveFlag) {
            var k = getXY(e,canvas);
            var r = Math.atan2(k.x-ox, oy-k.y);
            var hd = (Math.PI+r)/(2*Math.PI);
            // 半圆的滑动范围判断
            if (hd <= 0.75 && hd >= 0.25) {
                draw(hd);
            }
        }
    }, false);
    canvas.addEventListener(on.end, function(e) {
        moveFlag = false;
    }, false);
    draw(0.25);
</script>
</body>
</html>

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37086.html

(0)

相关推荐

  • pip 修改镜像源

    技术pip 修改镜像源 pip 修改镜像源背景
    由于pip初始镜像源下载某些包时非常慢,但我们可以对pip进行换源,将镜像源更改为国内源,这样效率能够提升很多。
    本文使用的是Linux Ubuntu18

    礼包 2021年12月1日
  • 怎么解析zookeeper 原理

    技术怎么解析zookeeper 原理今天就跟大家聊聊有关怎么解析zookeeper 原理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、zookeeper的角色

    攻略 2021年11月12日
  • IE6有哪些常见CSS解析Bug

    技术IE6有哪些常见CSS解析Bug这篇文章主要讲解了“IE6有哪些常见CSS解析Bug”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“IE6有哪些常见CSS解析Bug”吧

    攻略 2021年12月10日
  • 苹果手机使用技巧大全,iPhone有哪些超实用技巧

    技术苹果手机使用技巧大全,iPhone有哪些超实用技巧1、保持镜头清洁每次拍摄前先清洁一下,可以令影像更清晰苹果手机使用技巧大全。iPhone 镜头很小,如果镜头上有指纹的话,会非常影响效果。这时有抹镜布就最好,没有的话

    生活 2021年10月21日
  • 中山一日游攻略,去中山自驾游,有什么好去处

    技术中山一日游攻略,去中山自驾游,有什么好去处谢谢邀请!中山地处广东中山市中山一日游攻略,历史悠久,风光秀丽,名胜古迹众多,一个自驾游的好去处。首先是孙中山故居,因孙中山先生而闻名海内外,位于广东省中山市翠亭村
    这里是中

    生活 2021年10月25日
  • oracle12c中如何导入java的jar文件

    技术oracle12c中如何导入java的jar文件这篇文章主要介绍oracle12c中如何导入java的jar文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1、

    攻略 2021年11月11日