この記事では、ドラッグアンドドロップを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 パスワードを変更する方法 (画像付き)
開発に Vue を使用する場合、次のような状況に遭遇することがあります。Vue インスタンスを生成し...
一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...
これら 2 つの属性はよく使用されますが、その違いはまとめられていません。それでは、その使い方をまと...
1. pipとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンイ...
1. ビッグデータとHadoopビッグデータについて研究し学ぶには、当然 Hadoop から始める必...
序文一部の CSS 相互作用の影響により、要素に設定されたz-index実際のサイズに応じて重ね合わ...
コードをコピーコードは次のとおりです。 <div スタイル="幅:630px;高さ:...
背景最近、Node.js を勉強しているのですが、クラウド サーバーがあることを思い出しました。しか...
ウェブデザインでは、ウェブページを美しく見せるために矢印を装飾としてよく使用します。現在、多くのウェ...
ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...
よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...
インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデック...
vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...
背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...
目次CSS3 ボックスモデルa. CSS3 フィルターb. CSS3 calc関数c. CSS3 ト...