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): テーブル本体タグ

推薦する

JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つ...

Vue ソング プログレス バーのサンプル コード

なお、これはvue-cliで作成したプロジェクトではありません。vue.jsを参照して記述したHTM...

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...

IE5.0以降のHTCコンポーネントの定義の概要

Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...

MySQL に大量のデータを挿入する 4 つの方法の例

序文この記事では主に、MySQLに大量のデータを挿入する4つの方法を紹介し、参考と学習のために共有し...

Win10 インストール Linux システム チュートリアル ダイアグラム

Windows システムに仮想マシンをインストールするには、 VMware Workstationソ...

Vueコンポーネント間のデータ共有の詳細な説明

目次1. プロジェクト開発において、コンポーネント間の最も一般的な関係は次の 2 つのタイプに分けら...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

WeChatアプレットが9マスグリッド効果を実現

この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...

CentOS 7.4 で MySQL 5.7.28 バイナリモードをインストールする方法

Linuxシステムバージョン: CentOS7.4 MySQL バージョン: 5.7.28 Linu...

JavaScript 配列のマージのケーススタディ

方法1: var a = [1,2,3]; var b = [4,5] b を連結します。 コンソー...

Dockerがコンテナを作成した後にホスト名を変更する詳細なプロセス

後悔を癒す薬は世の中にある、考えてみる気さえあれば!コンテナを再作成する必要はもうありません。 m2...

CSS3は赤い封筒を振る効果を実現します

赤い封筒の揺れ効果を実現するには要件があります。これまでやったことがないので、記録しておきます。ヘヘ...

MySQL で特定の日、月、または年のデータをクエリするためのコードの詳細な説明

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...