この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 ドラッグ機能の実装原理: (直接取り除きます!) <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <meta http-equiv="X-UA-compatible" content="ie=edge"> <title>ドキュメント</title> <スタイル> #箱 { 位置: 絶対; 左: 100px; 上: 100px; 幅: 100ピクセル; 高さ: 100px; 背景: 赤; } #ボックス2 { 位置: 絶対; 左: 200px; 上: 200px; 幅: 100ピクセル; 高さ: 100px; 背景: 緑; } </スタイル> </head> <本文> <div id="box">テキスト</div> <div id="box2">テキスト</div> </本文> <スクリプト> クラスドラッグ{ マウスを起動します。 開始El = {}; #el = null; コンストラクタ(el, オプション) { this.#el = el; this.option = オプション; これを開始(); } 始める() { 移動 = (e) => { this.move(e) } this.#el.addEventListener('mousedown', (e) => { this.startMouse = { x: e.clientX、 y: e.clientY, } this.ondragstart && this.ondragstart(e) this.startEl = this.getOffset(); document.addEventListener('mousemove', 移動); document.addEventListener('mouseup', (e) => { document.removeEventListener('mousemove', 移動); this.end(e); }, { 一度: 真 }) e.preventDefault(); }) } 移動する{ nowMouse = { x: e.clientX、 y: e.clientY, } disMouse = { x: nowMouse.x - this.startMouse.x、 y: nowMouse.y - this.startMouse.y } this.ondrag && this.ondrag(e) this.setOffset(マウスを離す) } 終了(e) { this.ondragend && this.ondragend(e) } オフセット取得() { 戻る { x: parseFloat(getComputedStyle(this.#el)["left"]), y: parseFloat(getComputedStyle(this.#el)["top"]) } } setOffset(dis) { this.#el.style.left = this.startEl.x + dis.x + 'px' this.#el.style.top = this.startEl.y + dis.y + 'px' } } box = document.querySelector("#box"); とします。 box2 を document.querySelector("#box2") とします。 d = new Drag(box); とします。 d2 = new Drag(box2); とします。 clonex = null とします。 d2.ondragstart = (e) => { clonex = box2.cloneNode(true); document.body.appendChild(クローン) box2.style.不透明度 = 0.5 } d2.ondragend = () => { document.body.removeChild(clonex); box2.style.不透明度 = 1 } </スクリプト> </html> 最終的な効果(ドラッグされたブロックは緑のブロックです) 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法
>>: Xampp サーバーで MySQL パスワードを変更する方法 (画像付き)
注: このデモはミニプログラム環境でテストされており、他の h5 および pc Web ページにも適...
MySQL を自分でインストールするのに 3 時間かかりました。チュートリアルはたくさんあるにもかか...
1. iframe の定義と使用法iframe 要素は、別のドキュメントを含むインライン フレーム...
MySQL 自体はファイルシステムに基づいて開発されましたが、ロックの存在が異なります。データベース...
以下にまとめたナレッジポイントはどれもよく使われる貴重な情報ばかりですので、ぜひ上手に集めてください...
目次Tomcat ダウンロードチュートリアルTomcat インストールチュートリアルTomcat の...
序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...
詳細には立ち入らずに、コードに直接進みましょう。一緒にコミュニケーションを取り、学びましょう。月ごと...
目次1. 解凍コマンド1.1 構文1.2 オプション2. 例1. 解凍コマンドunzip コマンドは...
最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。...
私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほと...
目次1. はじめに2. 準備3. スクリプトプロジェクトの構築4. コードの作成と実行5. まとめと...
私が長い間遭遇してきた問題を要約してみましょう。プロジェクトでは、フロントエンドをレンダリングするた...
デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...
目次JSBridgeの起源JSBridgeの双方向通信原理JSはネイティブを呼び出すネイティブコール...