广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS实现圆形进度条拖拽滑动
  • 522
分享到

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

2024-04-02 19:04:59 522人浏览 泡泡鱼
摘要

本文实例为大家分享了js实现圆形进度条拖拽滑动的具体代码,供大家参考,具体内容如下 效果展示 半圆进度条效果 圆形进度条 代码实现 <!doctype html>

本文实例为大家分享了js实现圆形进度条拖拽滑动的具体代码,供大家参考,具体内容如下

效果展示

半圆进度条效果

圆形进度条

代码实现


<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta Http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <title> 圆形进度条拖拽滑动 </title>
</head>
<body>
<canvas id="canvasId" width="400" height="400"></canvas>
<script type="text/javascript">
    var canvas = document.getElementById("canvasId");
    var ctx = canvas.getContext("2d");
    var ox = 200;
    var oy = 200;
    var or = 180;
    var br = 15;
    var moveFlag = false;

    function offset(r,d) {//根据弧度与距离计算偏移坐标
        return {x: -Math.sin(r)*d, y: Math.cos(r)*d};
    };

    function draw(n) {
        ctx.clearRect(0,0,canvas.width,canvas.height);
        ctx.strokeStyle = "#99a";
        ctx.lineWidth = 5;
        ctx.beginPath();
        ctx.arc(ox,oy,or,0,Math.PI,true);//半圆
        // ctx.arc(ox,oy,or,0,2*Math.PI,true);//整圆
        ctx.stroke();
        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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: JS实现圆形进度条拖拽滑动

本文链接: https://www.lsjlt.com/news/154879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS实现圆形进度条拖拽滑动
    本文实例为大家分享了JS实现圆形进度条拖拽滑动的具体代码,供大家参考,具体内容如下 效果展示 半圆进度条效果 圆形进度条 代码实现 <!doctype html>...
    99+
    2022-11-12
  • vue中怎么实现一个拖拽进度条滑动组件
    这期内容当中小编将会给大家带来有关vue中怎么实现一个拖拽进度条滑动组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。调用组件如下:<slider :mi...
    99+
    2022-10-19
  • JS实现拖拽进度条改变元素透明度
    今天要分享的是运用原生JS拖拽进度条改变元素透明度,效果如下: 以下是代码实现,欢迎大家复制粘贴。 <!DOCTYPE html> <html> &...
    99+
    2022-11-12
  • JavaScript实现可拖拽的进度条
    本文实例为大家分享了JavaScript实现可拖拽的进度条的具体代码,供大家参考,具体内容如下 一.进度条实现 <html> <head> <m...
    99+
    2022-11-12
  • react可拖拽进度条的实现
    效果 import { FC, ReactElement, useRef } from "react"; import styled from "styled-componen...
    99+
    2022-11-13
  • react-native如何实现圆弧拖动进度条
    这篇文章主要为大家展示了“react-native如何实现圆弧拖动进度条”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“react-native如何实现圆弧拖动进...
    99+
    2022-10-19
  • Android View实现圆形进度条
    本文实例为大家分享了Android View实现圆形进度条的具体代码,供大家参考,具体内容如下 主要涉及到下面几个方法: // 画圆 canvas.drawCircle // 画...
    99+
    2022-11-12
  • vue实现拖拽进度条的方法
    本文将为大家详细介绍“vue实现拖拽进度条的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“vue实现拖拽进度条的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧...
    99+
    2023-06-06
  • react可拖拽进度条怎么实现
    本文小编为大家详细介绍“react可拖拽进度条怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“react可拖拽进度条怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果import {&n...
    99+
    2023-06-30
  • 怎么用react native实现圆弧拖动进度条
    这篇“怎么用react native实现圆弧拖动进度条”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用react nat...
    99+
    2023-06-05
  • android圆形进度条怎么实现
    要实现一个圆形进度条,你可以使用`ProgressBar`控件来实现,并将其样式设置为圆形。首先,在布局文件中添加以下代码:```x...
    99+
    2023-08-30
    android
  • MFC圆形进度条怎么实现
    MFC(Microsoft Foundation Class)是用于开发Windows应用程序的一套类库。要实现MFC圆形进度条,可...
    99+
    2023-08-20
    MFC
  • android如何实现圆形进度条
    要实现圆形进度条,可以使用Android的自定义控件来实现。首先,在layout文件中定义一个圆形进度条的布局,例如circle_p...
    99+
    2023-08-20
    android
  • JavaScript实现圆形进度条效果
    本文实例为大家分享了JavaScript实现圆形进度条效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"...
    99+
    2022-11-12
  • java圆形进度条怎么实现
    以下是一个简单的Java圆形进度条的实现代码:import java.awt.Color;import java.awt.Dimen...
    99+
    2023-05-13
    java圆形进度条 java
  • JavaScript如何实现可拖拽的进度条
    这篇文章给大家分享的是有关JavaScript如何实现可拖拽的进度条的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.进度条实现<html><head>  <me...
    99+
    2023-06-15
  • Android实现自定义圆形进度条
    今天无意中发现一个圆形进度,想想自己实现一个,如下图: 基本思路是这样的: 1.首先绘制一个实心圆 2.绘制一个白色实心的正方形,遮住实心圆 3.在圆的中心动态绘制当前进度的...
    99+
    2022-06-06
    自定义 进度条 Android
  • MFC圆形进度条(ProgressContrl)如何实现
    要实现MFC圆形进度条,可以按照以下步骤进行:1. 创建一个MFC对话框应用程序。2. 在对话框中添加一个Progress Cont...
    99+
    2023-08-19
    MFC
  • android RecyclerView实现条目Item拖拽排序与滑动删除
    效果演示 需求和技术分析 RecyclerView Item拖拽排序::长按RecyclerView的Item或者触摸Item的某个按钮。 RecyclerView ...
    99+
    2022-06-06
    recyclerview 排序 Android
  • 如何使用CSS实现圆形进度条
    这篇文章主要介绍了如何使用CSS实现圆形进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   首先一个父级div设置相对定位,内部含有...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作