最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)圓形進度條拖拽滑動

 更新時間:2021年10月19日 17:16:24   作者:Initail  
這篇文章主要為大家詳細介紹了JS實現(xiàn)圓形進度條拖拽滑動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JS實現(xiàn)圓形進度條拖拽滑動的具體代碼,供大家參考,具體內(nèi)容如下

效果展示

半圓進度條效果

圓形進度條

代碼實現(xiàn)

<!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) {//根據(jù)弧度與距離計算偏移坐標
        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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

  • js代碼延遲一定時間后執(zhí)行一個函數(shù)的實例

    js代碼延遲一定時間后執(zhí)行一個函數(shù)的實例

    下面小編就為大家?guī)硪黄猨s代碼延遲一定時間后執(zhí)行一個函數(shù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • JS實現(xiàn)加載時鎖定HTML頁面元素的方法

    JS實現(xiàn)加載時鎖定HTML頁面元素的方法

    這篇文章主要介紹了JS實現(xiàn)加載時鎖定HTML頁面元素的方法,涉及javascript針對頁面元素的遍歷與屬性操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • 微信小程序判斷頁面是否從其他頁面返回的實例代碼

    微信小程序判斷頁面是否從其他頁面返回的實例代碼

    這篇文章主要介紹了微信小程序判斷頁面是否從其他頁面返回的實例代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • dess中一個簡單的多路委托的實現(xiàn)

    dess中一個簡單的多路委托的實現(xiàn)

    這個SDelegate用起來可能會比較詭異,比如很多操作都要重新賦值。Dess中,SDelegate主要用于一些特定場合,如DOM事件派發(fā)。
    2010-07-07
  • 純js實現(xiàn)重發(fā)驗證碼按鈕倒數(shù)功能

    純js實現(xiàn)重發(fā)驗證碼按鈕倒數(shù)功能

    這篇文章主要介紹了純js實現(xiàn)重發(fā)驗證碼按鈕倒數(shù)功能,本文整理了兩個實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • 詳解webpack解惑:require的五種用法

    詳解webpack解惑:require的五種用法

    這篇文章主要介紹了詳解webpack解惑:require的五種用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 響應(yīng)式表格之固定表頭的簡單實現(xiàn)

    響應(yīng)式表格之固定表頭的簡單實現(xiàn)

    下面小編就為大家?guī)硪黄憫?yīng)式表格之固定表頭的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法

    javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法

    這篇文章主要介紹了javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法,設(shè)計鼠標事件及css樣式操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • JS控件bootstrap suggest plugin使用方法詳解

    JS控件bootstrap suggest plugin使用方法詳解

    這篇文章主要介紹了JS控件bootstrap suggest plugin的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 最新評論

    穆棱市| 峨山| 梅州市| 桦川县| 镇江市| 黎川县| 黎平县| 永济市| 花莲市| 页游| 那曲县| 措勤县| 九龙县| 阳朔县| 肥西县| 秀山| 盐源县| 灌云县| 乌恰县| 家居| 永昌县| 澄城县| 保康县| 积石山| 丹江口市| 繁峙县| 阆中市| 克东县| 伽师县| 五常市| 理塘县| 乌兰浩特市| 黄大仙区| 成武县| 永善县| 开化县| 错那县| 鄂托克前旗| 梅州市| 库尔勒市| 广饶县|