ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカスタマイズされたアクションを実行できるようにするために使用されます。 ドラッグアンドドロッププロセスアクション1. マウスを押すとonmousedownイベントがトリガーされます 2. マウスの動きがonmousemoveイベントをトリガーする 3. マウスを離すとonmouseupイベントがトリガーされます 抗力原理1. マウスの押下 + マウスの移動 = ドラッグ ------- イベント onmousedown + onmousemove 2. マウスを離す = ドラッグなし -------- マウスを離すとドラッグが停止します 3. マウスオフセット = ドラッグ距離 DOM をクリックすると、現在のマウス座標、つまり x 値と y 値、およびドラッグされた DOM の上と左の値を記録し、マウスが押されたコールバック関数にマウス移動イベントを追加します。 document.addEventListener("mousemove", 移動中, false) マウスアップイベントを追加します document.addEventListener("mouseup",function() { document.removeEventListener("mousemove", 移動中, false); }、 間違い); このリフト イベントは、マウスの動きの監視をキャンセルするために使用されます。ドラッグはマウスが押されているときにのみ実行でき、マウスを離すと動きが停止するためです。 マウスを押して動かすと、動きの x 値と y 値が記録され、ドラッグされた DOM の上と左の値は次のようになります。 // 非常にシンプルなバージョン var div = document.querySelector("div"); // 押されたときにドキュメント内のマウス移動イベントのリッスンを開始します // マウスのリリースイベントのリッスンを開始します // 押されたときにのみドラッグを準備します div.onmousedown=function(e1){ // マウスがドキュメント内を移動しても、div 上では移動できません。マウスが div から離れてしまうと、div をドラッグできなくなります。onmousemove=function(e){ // マウスが動くと、要素の左上とビューポートを基準とした現在のマウス座標が割り当てられます。 // 押された位置でドラッグする必要があるため、キーが押されたときに div を基準としたマウスの左上隅の位置も取得する必要があります。 // マウスが押された位置でドラッグされるようにするには、現在のマウスの位置から相対要素の左上隅の位置を引いた値を使用します。 div.style.left=e.clientX-e1.offsetX+"px"; div.style.top=e.clientY-e1.offsetY+"px"; } // マウスボタンが放されたら、マウス移動イベントを削除し、マウス解放イベントを削除します div.onmouseup=function(){ ドキュメント.onmousemove=null; ドキュメント.onmouseup=null; } } //シンプルバージョン var div = document.querySelector("div"); var オフセットX、オフセットY; div.addEventListener("mousedown",mouseDownHandler); 関数mouseDownHandler(e){ オフセットX=e.オフセットX オフセットY=e.オフセットY document.addEventListener("mousemove",mousemoveHandler) document.addEventListener("mouseup",mouseupHandler) } 関数mousemoveHandler(e){ div.style.left=e.clientX-offsetX+"px" div.style.top=e.clientY-offsetY+"px" } 関数mouseupHandler(e){ document.removeEventListener("mousemove",mousemoveHandler) document.removeEventListener("mouseup",mouseupHandler) } // シンプルなアップグレードバージョン var div = document.querySelector ("div"); var オフセットX、オフセットY; div.addEventListener("mousedown",mouseHandler); 関数mouseHandler(e){ if(e.type==="mousedown"){ オフセットX = e.offsetX; オフセットY=e.offsetY; document.addEventListener("mousemove",mouseHandler) document.addEventListener("mouseup",mouseHandler) }それ以外の場合(e.type==="mousemove"){ div.style.left=e.clientX-offsetX+"px" div.style.top=e.clientY-offsetY+"px" }それ以外の場合(e.type==="mouseup"){ document.removeEventListener("mousemove",mouseHandler) document.removeEventListener("mouseup",mouseHandler) } } 注記 a. ドラッグされた要素のスタイルを有効にするには、絶対位置または相対位置に設定する必要があります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Linux で MySQL のスケジュールバックアップを実装する方法
実際に参加したプロジェクトでは、MySQL テーブルのデータ量が数百万に達すると、通常の SQL ク...
CSSスタイルとHTMLタグ要素を使用するさまざまな HTML タグに点線の境界線を追加するために、...
序文コードを書くと、時々基数変換の問題に遭遇します。一般的な変換には、2進数、8進数、10進数、16...
MySQL ユーザーと権限MySQL には、MySQL と呼ばれるシステムに付属するデータベースがあ...
MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...
目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...
目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...
【質問】 HP サーバーを使用しています。SSD が IOPS 約 5000 を書き込むと、%uti...
Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...
目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....
まず、どのフィールドまたはフィールドの組み合わせがデータ行を一意に識別できるかを決定する必要がありま...
目次ネイティブJS GETリクエストの送信方法投稿リクエストの送信方法パラメータ付きのGETリクエス...
MySQL のインストールは比較的簡単なので、通常は次のステップに直接進み、注意が必要な点に集中する...
MySQL 5.7.18 のインストールと問題の概要。今日、新しい MySQL サーバーを導入しまし...
概要Prometheus は、HTTP プロトコルを介してリモート マシンからデータを収集し、ローカ...