この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 1. ドラッグの基本的な効果アイデア: マウスがボックス上で押されると、移動の準備が整います(イベントがオブジェクトに追加されます) マウスが動くと、ボックスはマウスに追従します(イベントがページに追加されます) マウスを離すと、ボックスの動きが止まります(イベントがページに追加されます) var o = document.querySelector('div'); //マウスダウン o.onmousedown = function (e) { //ボックスに対するマウスの位置 var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //マウスの移動 document.onmousemove = function (e) { o.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; } //マウスアップ document.onmouseup = function () { ドキュメント.onmousemove = null; ドキュメント.onmouseup = null; } } 2. ドラッグアンドドロップの問題ブラウザのデフォルトの動作(テキストと画像はドラッグ可能)により、ボックスにテキストが表示されたり、ボックス自体が画像である場合は、 return false を設定してデフォルトの動作を回避できます。ただし、このデフォルトの動作のインターセプトは、IE の下位バージョンには適用できません。グローバル キャプチャを使用して IE の問題を解決できます。 グローバルキャプチャ グローバル キャプチャは、IE の下位バージョンにのみ適用されます。 <button>btn1</button> <button>btn2</button> <スクリプト> var bts = document.querySelectorAll('ボタン') bts[0].onclick = 関数(){ コンソールログ(1); } bts[1].onclick = 関数(){ コンソールログ(2); } // bts[0].setCapture() //グローバルキャプチャを追加 // bts[0].releaseCapture() ; //グローバルキャプチャを解除</script> 指定されたノードにグローバル キャプチャが追加されると、ページ上の他の要素は同じタイプのイベントをトリガーしなくなります。 3. ドラッグアンドドロップのフルバージョンvar o = document.querySelector('div'); //マウスダウン o.onmousedown = function (e) { if (o.setCapture) { //IE 下位バージョン o.setCapture() } e = e || ウィンドウイベント //ボックスに対するマウスの位置 var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //マウスの移動 document.onmousemove = function (e) { e = e || ウィンドウイベント o.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; } //マウスアップ document.onmouseup = function () { ドキュメント.onmousemove = null; ドキュメント.onmouseup = null; o.releaseCaptureの場合{ o.releaseCapture(); //グローバルキャプチャを解放する} } return false; //標準ブラウザのデフォルトの動作} 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: nginx を使用して http を https に変換するサンプルコード
目次安定スロットル: 手ぶれ防止: 一定時間内に最後のタスクのみを実行します。スロットル: 一定期間...
1. docker-maven-pluginの紹介私たちの継続的インテグレーションプロセスでは、プロ...
1. 4つの起動方法: 1.mysqld MySQL サーバーを起動します: ./mysqld --...
前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...
実行環境、Idea2020バージョン、Tomcat10、実行時にTomcat CatalinaLog...
技術的背景このアプリケーションは vue-cli フレームワークを使用し、カスタム コンポーネント ...
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...
MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...
序文ストレス テスト中に、リソース使用のボトルネックによって発生する最も直接的なパフォーマンスの問題...
HTML を使用してコンテンツをマークアップする目的は、Web ページにセマンティクスを与えることで...
開発の背景:最近、私はバッチ データを MySQL データベースにインポートする機能に取り組んでいま...
目次1. 新しいプロジェクトを作成する2. 依存関係を追加する3. SpringコンテナにDrive...
主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...
今日もとても実践的な事例です。名前を聞くだけで高度で難しそうですよね?今日はカルーセル画像の真髄を簡...
序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...