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

JS實(shí)現(xiàn)圓形進(jìn)度條拖拽滑動(dòng)

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

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

效果展示

半圓進(jìn)度條效果

圓形進(jìn)度條

代碼實(shí)現(xiàn)

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <title> 圓形進(jìn)度條拖拽滑動(dòng) </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ù)弧度與距離計(jì)算偏移坐標(biāo)
        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);

            // 半圓的滑動(dòng)范圍判斷
            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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    宣恩县| 高碑店市| 嘉荫县| 湖南省| 麦盖提县| 大竹县| 平陆县| 福鼎市| 株洲县| 广丰县| 深州市| 同江市| 于田县| 阳朔县| 咸丰县| 宁强县| 西青区| 平江县| 五台县| 宣恩县| 柯坪县| 新巴尔虎右旗| 黄梅县| 扬中市| 龙游县| 阜城县| 新密市| 南康市| 自治县| 嘉定区| 永定县| 万载县| 襄城县| 洛南县| 高安市| 新田县| 棋牌| 宁明县| 石柱| 定南县| 通榆县|