JSは円形のプログレスバーのドラッグとスライドを実装します

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹介します。具体的な内容は次のとおりです。

エフェクト表示

半円形のプログレスバー効果

円形の進捗バー

コードの実装

<!doctypehtml>
<html lang="ja">
<ヘッド>
  <メタ文字セット="UTF-8" />
  <meta http-equiv="X-UA-compatible" content="IE=edge,chrome=1" />
  <title> 円形の進行状況バーをドラッグしてスライドします</title>
</head>
<本文>
<キャンバスid="canvasId" 幅="400" 高さ="400"></キャンバス>
<script type="text/javascript">
    var キャンバス = document.getElementById("canvasId");
    var ctx = canvas.getContext("2d");
    var ox = 200;
    var oy = 200;
    var または = 180;
    var br = 15;
    var 移動フラグ = false;

    function offset(r,d){//ラジアンと距離に基づいてオフセット座標を計算します。 return {x: -Math.sin(r)*d, y: Math.cos(r)*d};
    };

    関数draw(n) {
        ctx.clearRect(0,0,キャンバス幅、キャンバス高さ);
        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 = "中央";
        ctx.textBaseline = "中央";
        ctx.fillText(Math.round(n*100-25)+"%",ox,oy);
        ctx.fillStyle = "#00f";
        ctx.beginPath();
        var d = offset(n*2*Math.PI, または);
        ctx.arc(ox+dx,oy+dy,br,0,2*Math.PI,true);
        ctx.fill();
    }

    var on = (ドキュメント内の "ontouchstart")? {
        開始: "touchstart"、移動: "touchmove"、終了: "touchend"
    } : {
        開始: 「mousedown」、移動: 「mousemove」、終了: 「mouseup」
    };

    関数 getXY(e,obj) {
        var et = e.touches? e.touches[0] : e;
        var x = et.clientX;
        var y = et.clientY;
        戻る {
            x : x - obj.offsetLeft + (document.body.scrollLeft || document.documentElement.scrollLeft)、
            y : y - obj.offsetTop + (document.body.scrollTop || document.documentElement.scrollTop)
        }
    }

    キャンバス.addEventListener(on.start, 関数(e) {
        移動フラグ = true;
    }、 間違い);

    キャンバス.addEventListener(on.move, 関数(e) {
        if (フラグを移動) {
            var k = getXY(e, キャンバス);
            var r = Math.atan2(kx-ox, oy-ky);
            var hd = (Math.PI+r)/(2*Math.PI);

            // 半円のスライド範囲を決定します if (hd <= 0.75 && hd >= 0.25) {
                描画(hd);
            }
        }
    }、 間違い);

    キャンバス.addEventListener(on.end, 関数(e) {
        移動フラグ = false;
    }、 間違い);

    引き分け(0.25);
</スクリプト>

</本文>
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JSはプログレスバーをドラッグして要素の透明度を変更することを実装しています
  • JavaScript でドラッグ可能なプログレスバーを実装する
  • JavaScript は水平方向のプログレスバーのドラッグ効果を実装します
  • スライドプログレスバー効果を実現する js

<<:  Mysqlのマージ結果と水平スプライシングフィールドの実装手順

>>:  HTML テーブルタグチュートリアル (45): テーブル本体タグ

推薦する

DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

要件: Celery は Django に導入されています。Django プロジェクトを開始するとき...

VUEは登録とログインの効果を実現します

この記事の例では、登録とログインの効果を実現するためのVUEの具体的なコードを紹介します。具体的な内...

MySQL で二重引用符の位置が誤っていたために起きた殺人事件の詳細な分析

1. はじめに最近、開発者が誤ってデータを削除したり更新したりするケースがよくあります。今回もまた問...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...

Linux システムのパフォーマンスを分析するための top コマンドの詳細な説明

Linux topコマンドの紹介top コマンドは、Linux でよく使用されるパフォーマンス分析ツ...

HTML ページ出力で従うべきいくつかの原則の要約

1. DOCTYPE は必須です。ブラウザは宣言した DOCTYPE に基づいてページのレンダリング...

VMware Workstation での VMware vSphere のセットアップ (グラフィック チュートリアル)

VMware vSphere は、業界をリードする最も信頼性の高い仮想化プラットフォームです。 v...

シンプルなログインページを実装するための HTML+jQuery

目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...

FlashFXP FTP クライアント ソフトウェア登録クラッキング方法

FlashFXPのダウンロードアドレスは、https://www.jb51.net/softs/95...

Linux での syslogd および syslog.conf ファイルの解釈

1: syslog.conf の概要異なるタイプの Unix の場合、標準の UnixLog システ...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...

ボタンの権限判定を実装するためのVueカスタムv-has命令

アプリケーションシナリオバックグラウンド管理システムを例にとると、各ユーザーには異なるボタン権限があ...

JavaScript でピンボール ゲームの Web バージョンを実装する

参考までに、JavaScriptのオブジェクトとメソッドを使用して実装されたWebピンボールゲームを...

WeChatアプレットのオーディオコンポーネントがiOSで再生できない問題の解決策

解決策:クリック イベントをオーディオ コンポーネントにバインドし、再生メソッドと一時停止メソッドを...

Mysql での結合操作

結合の種類1. 内部結合: 結合関係を持つ 2 つのテーブル内のフィールドは、結合関係を満たすレコー...