スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

スライダーを作成するためのネイティブ js ドラッグ アンド ドロップ機能のサンプル コード

ドラッグ アンド ドロップはフロントエンドでよく使われる機能であり、多くのエフェクトで js のドラッグ アンド ドロップ機能が使用されます。スライダーのコア機能は、js を使用してスライダーをドラッグし、位置を変更することです。完全なスライダーには、スライダー、スライド トレース、スライダー、テキスト、その他の要素が含まれます。まず、次に示すように HTML コードを記述します。

<div class="bar_wrap" id="wrap"><!--外側のラッピング要素-->
 <div class="bar_container"><!--スライドバー-->
  <div class="bar_into"></div><!--スライドの軌跡-->
 </div>
 <div class="bar_drag"><!--スライダー-->
  <div class="bar_text"></div><!--テキスト-->
 </div>
</div>

次に、各要素に CSS スタイルを追加して、次の効果を実現します。

次に、分析関数を使用して js コードをステップごとに完成させます。

1. スライダーの各要素を取得します。コードは次のとおりです。

//外側のラップ要素を取得します var eBarWrap = document.getElementById('wrap');
 //スライダーを取得します var eBarCon = eBarWrap.getElementsByClassName('bar_container')[0];
 //スライディングトレース要素を取得します。var eBarInto = eBarWrap.getElementsByClassName('bar_into')[0];
 //スライダーを取得します var eBarDrag = eBarWrap.getElementsByClassName('bar_drag')[0];
 //テキスト要素を取得します var eBarText = eBarWrap.getElementsByClassName('bar_text')[0];

2. 最大スライド値を取得する スライダーはスライダー バー内でのみスライドできるため、最大スライド位置を制限する必要があります。 DOM 要素の位置は要素の左側から計算されるため、最大値はスライダーの幅 - スライダーの幅になります (以下を参照)。

//最大位置を取得します。var nMax = eBarCon.offsetWidth - eBarDrag.offsetWidth;

3. スライダーをドラッグする機能を実現するには、マウス プレス イベント関数をスライダーにバインドします。コードは次のとおりです。

 //スライダーがドラッグイベントを追加します eBarDrag.addEventListener('mousedown',function(event){
  
 });

3.1 スライダーの位置を取得するには、スライダーをドラッグする必要があります。マウスの動きに合わせてスライダーをドラッグする前に、まずスライダーの元の位置を知っておく必要があります。イベント オブジェクトは、スライダーにバインドされたイベント関数に渡されます。このイベント オブジェクトは、現在のイベントのインスタンス オブジェクトを表し、現在のイベントに関連する情報を含んでいます。以下のように表示されます。

//スライダーがドラッグイベントを追加します eBarDrag.addEventListener('mousedown',function(event){
  // ドラッグを開始するためにマウスのクリック位置を初期化します var nInitX = event.clientX;
  //スライダーの位置を初期化します var nInitLeft = this.offsetLeft;
 });

3.2 スライダーはマウスと一緒に移動します。スライド トレースとテキスト値を変更するときは、スライダー上でマウスを押してからマウスを動かすと、スライダーがマウスと一緒に移動します。ただし、通常はスライダー上でのみマウスを動かすことは不可能なので、次に示すように、ページ上でマウス移動イベントをバインドする必要があります。

//スライダーがドラッグイベントを追加します eBarDrag.addEventListener('mousedown',function(event){
  /*...*/

  //ページはマウス移動イベントをバインドします document.onmousemove = event=>{
   //マウスが移動したときに他の要素やテキストが選択されないようにデフォルトの動作をキャンセルします。event.preventDefault();
   //マウスが動いた後にスライダーが移動する位置を取得します。let nX = event.clientX - nInitX + nInitLeft;
   //スライダーの最大移動位置を制限する if(nX>=nMax){
    nX = nMax;
   }
   //スライダーの最小移動位置を制限する if (nX <= 0) {
    nX = 0;
   }
   //スライダーの位置を変更します(矢印関数が使用されているため、これはまだスライダーを指しています)
   this.style.left = nX + 'px';
   // スライディング トレースの幅を変更します eBarInto.style.width = nX + this.offsetWidth/2 + 'px';
   //テキスト値を変更します eBarText.innerHTML = Math.ceil(nX/nMax*100)/10;
  };
 });

3.3 マウスを放すとスライダーの位置が固定されます。マウスを放すとスライダーは現在の位置で固定され、スライドの軌跡とテキストの値が一緒に変更されます。

//スライダーがドラッグイベントを追加します eBarDrag.addEventListener('mousedown',function(event){
  /*...*/

  //マウスバインディングイベントを解放し、ページ上のすべてのイベントをキャンセルします。document.onmouseup = function(event){
   ドキュメント.onmousemove = null;
   ドキュメント.onmouseup = null;
  }
 });

マウスプレスイベント機能が完成しました。スライダーのスタイルは CSS で実現できますが、デフォルトのテキスト値が空であるため、これは適切ではありません。そのため、次に示すように、テキスト要素のデフォルト値を 0 に割り当てるコードをもう 1 行追加する必要があります。

//デフォルト値を変更する eBarText.innerHTML = 0;

4. スライダーにクリック イベントを追加します。スライダー以外のスライダー上の任意の場所をクリックすると、スライダーはマウスがクリックされた場所に直接スライドします。この機能を実装するには、スライダーにクリック イベントを追加する必要があります。コードは次のとおりです。

//スライドバーにクリックイベントを追加 eBarCon.addEventListener('click',function(event){
  //スライダーの位置を設定します var nLeft = this.offsetLeft;
  // 配置された親要素を取得します。var eParent = this.offsetParent;
  //配置されたすべての親要素をループします while(eParent){
   // 親要素の offsetLeft 値を追加して、スライダーとページの左側の間の距離を正確に特定します。nLeft += eParent.offsetLeft;
   // 親要素の外側に配置された親要素を再度取得します。eParent = eParent.offsetParent;
  }
  //スライダーの位置を計算します var nX = event.clientX - nLeft;
  //スライダーの位置を変更します eBarDrag.style.left = nX + 'px';
  // スライディング トレースの幅を変更します eBarInto.style.width = nX + eBarDrag.offsetWidth/2 + 'px';
  //テキスト値を変更する eBarText.innerHTML = Math.ceil(nX/nMax*100)/10
 });

ネイティブ js ドラッグ アンド ドロップ機能を使用してスライダーを作成する方法に関するチュートリアルの記事はこれで終わりです。js ドラッグ アンド ドロップ機能を使用してスライダーを作成する方法の詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Javascript を使用して、スライドバー効果のあるスライドナビゲーション プラグインを開発します。
  • 水平画面と垂直画面を判断し、ブラウザのスライドバーを禁止するjsの例
  • jsは水平および垂直スライダーを実現します

<<:  効率をN倍に高めるVimクイックリファレンステーブル15個

>>:  MacでMysqlのルートパスワードを忘れた場合の解決方法

推薦する

Centos8 に nginx1.9.1 をインストールする詳細な手順

1.17.9 本当はもっと美味しいNginx のダウンロード アドレス: https://nginx...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

jQueryはドロップダウンメニューのスライド効果を実現します

Web ページを作成するときに、クールでスムーズなドロップダウン メニューが必要になることがあります...

外部キー制約を持つテーブルデータを削除する MySQL メソッドの紹介

MySQLでテーブルやデータを削除する場合、 [エラー] 1451 - 親行を削除または更新できませ...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

Linux システム MySQL8.0.19 クイックインストールと構成チュートリアル図

目次1. 環境の紹介2. MySQL-8.0.19をインストールする3. MySQLを設定する1. ...

ホバー生成の境界線によって生じる要素の移動を解決する方法

序文hover疑似クラスが要素に境界線を追加すると、要素内のコンテンツがずれることがあります。box...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

Dockerfile の一般的なコマンドの概要

構文の構成: 1 注釈情報2 コマンド --- パラメータ [通常は大文字 | 実際には大文字と小文...

Web データ ストレージ: Cookie、UserData、SessionStorage、WebSqlDatabase

クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...

MySQL データをエクスポートおよびインポートするための HeidiSQL ツール

場合によっては、SQL へのデータのエクスポートとインポートを容易にするために、特定のツールを使用し...

mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

jQueryをベースにカルーセル効果を実現する

この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...

jQuery でダイナミックなパーティクル効果を実現

この記事では、動的なパーティクル効果を実現するためのjQueryの具体的なコードを参考までに紹介しま...

WeChatアプレットコンポーネントライフサイクルの落とし穴の記録

通常、コンポーネントのライフサイクルは、ビジネス ロジックが始まる場所です。ビジネスシナリオが複雑で...