ドラッグは、ユーザーがオブジェクト上でマウス ボタンを押したまま別の場所にドラッグし、マウス ボタンを放してオブジェクトをそこにドロップすると発生します。 ドラッグできるオブジェクトには、要素ノード、画像、リンク、選択したテキストなど、いくつかの種類があります。 Web ページでは、デフォルトでドラッグできない要素ノードを除き、その他すべて (画像、リンク、選択したテキスト) を直接ドラッグできます。要素ノードをドラッグ可能にするには、ノードの <div ドラッグ可能="true"> このエリアはドラッグできます</div> 要素ノードの 要素ノードまたは選択したテキストをドラッグすると、次のイベントを含むドラッグ イベントが継続的にトリガーされます。
次の例は、ドラッグされたノードの背景色を動的に変更する方法を示しています。 div.addEventListener('dragstart', 関数(e) { this.style.backgroundColor = '赤'; }、 間違い); div.addEventListener('dragend', 関数(e) { this.style.backgroundColor = '緑'; }、 間違い); 上記のコードでは、 以下は、ノードを現在の親ノードから別の親ノードにドラッグする方法を示した例です。 /* HTML コードは次のとおりです <div class="dropzone"> <div id="ドラッグ可能" ドラッグ可能="true"> このノードはドラッグできます</div> </div> <div class="dropzone"></div> <div class="dropzone"></div> <div class="dropzone"></div> */ //ドラッグされたノード var dragged; document.addEventListener('dragstart', 関数(イベント) { // ドラッグされたノードを保存します。dragged = event.target; // ドラッグされたノードの背景色が透明になります。event.target.style.opacity = 0.5; }、 間違い); document.addEventListener('dragend', 関数(イベント) { // ドラッグされたノードの背景色が通常に戻ります。event.target.style.opacity = ''; }、 間違い); document.addEventListener('dragover', 関数(イベント) { // ドラッグ効果がリセットされないようにし、ドラッグされたノードをターゲット ノードに配置できるようにします。event.preventDefault(); }、 間違い); document.addEventListener('dragenter', 関数(イベント) { // ターゲットノードの背景色が紫に変わります // イベントがバブルするため、ノードをフィルタリングする必要があります if (event.target.className === 'dropzone') { event.target.style.background = '紫'; } }、 間違い); document.addEventListener('dragleave', 関数(イベント) { // ターゲットノードの背景色が復元されます if (event.target.className === 'dropzone') { イベントターゲットスタイルの背景 = ''; } }、 間違い); document.addEventListener('drop', 関数(イベント) { // イベントのデフォルトの動作を防止します(たとえば、特定の要素ノードでリンクを開くことができます)。 イベントをデフォルトにしない(); イベントターゲットクラス名が 'ドロップゾーン' の場合 // ターゲットノードの背景色を復元します。event.target.style.background = ''; //ドラッグしたノードをターゲットノードに挿入します。dragged.parentNode.removeChild(dragged); event.target.appendChild(ドラッグ); } }、 間違い); ドラッグ イベントについては注意すべき点がいくつかあります。
<div ondragover="false を返す"> <div ondragover="event.preventDefault()"> 上記のコードでは、ドラッグ イベントをキャンセルするか、デフォルトの動作を防止しないと、ドラッグされたノードを DragEvent インターフェースドラッグ イベントはすべて ブラウザは、ドラッグ イベントのインスタンス オブジェクトを生成するための 新しい DragEvent(タイプ、オプション)
データ転送インターフェースの概要ドラッグ イベントのすべてのインスタンスには、転送するデータの読み取りと書き込みに使用される ブラウザは var dataTrans = 新しい DataTransfer();
ドラッグされたデータは、データのタイプ (形式とも呼ばれます) とデータの値という 2 つの側面に分けられます。データの型は MIME 文字列 ( ドラッグ イベントが開始されると、開発者はデータ タイプとデータ値を提供できます。ドラッグ プロセス中に、開発者は DataTransfer のインスタンス プロパティデータ転送.ドロップ効果
上記の値以外、他の値を設定することは無効です。 target.addEventListener('dragover', 関数(e) { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = 'コピー'; }); 上記のコードでは、ドラッグされた要素 データ転送効果許可
効果が許可されていない場合、ユーザーはターゲット ノードでこの効果を実現できません。 このプロパティと このプロパティを設定するには、 source.addEventListener('dragstart', 関数(e) { e.dataTransfer.effectAllowed = '移動'; }); target.addEventListener('dragover', 関数(e) { ev.dataTransfer.dropEffect = '移動'; }); データ転送.ファイル
以下はドラッグされたファイルを受信する例です。 // HTML コードは次のとおりです // <div id="output" style="min-height: 200px;border: 1px solid black;"> // ファイルをここにドラッグします // </div> var div = document.getElementById('出力'); div.addEventListener("dragenter", 関数(イベント) { div.textContent = ''; イベントの伝播を停止します。 イベントをデフォルトにしない(); }、 間違い); div.addEventListener("dragover", 関数(イベント) { イベントの伝播を停止します。 イベントをデフォルトにしない(); }、 間違い); div.addEventListener("drop", 関数(イベント) { イベントの伝播を停止します。 イベントをデフォルトにしない(); var ファイル = event.dataTransfer.files; (var i = 0; i < files.length; i++) { div.textContent += files[i].name + ' ' + files[i].size + 'bytes\n'; } }、 間違い); 上記のコードでは、ドラッグされたファイルの情報は div.addEventListener('drop', 関数(e) { e.preventDefault(); e.stopPropagation(); var ファイルリスト = e.dataTransfer.files; ファイルリストの長さが0より大きい場合 var ファイル = ファイルリスト[0]; var リーダー = 新しい FileReader(); reader.onloadend = 関数(e) { e.target.readyState === FileReader.DONE の場合 { var コンテンツ = reader.result; div.innerHTML = 'ファイル: ' + file.name + '\n\n' + コンテンツ; } } reader.readAsBinaryString(ファイル); } }); データ転送タイプ
以下は 関数 contains(リスト, 値){ (var i = 0; i < list.length; ++i) の場合 { if(list[i] === value)はtrueを返します。 } false を返します。 } 関数doDragOver(イベント) { var isLink = contains(event.dataTransfer.types, 'text/uri-list'); if (isLink) イベント.preventDefault(); } 上記のコードでは、ドラッグされたノードがリンクである場合にのみ、現在のノードへのドロップが許可されます。 データ転送アイテム
DataTransferItemList インスタンスには、次のプロパティとメソッドがあります。
DataTransferItem インスタンスには、次のプロパティとメソッドがあります。
ここに例があります。 div.addEventListener('drop', 関数(e) { e.preventDefault(); e.dataTransfer.items が null の場合 (var i = 0; i < e.dataTransfer.items.length; i++) { console.log(e.dataTransfer.items[i].kind + ': ' + e.dataTransfer.items[i].type); } } }); DataTransfer インスタンスメソッドデータ転送.setData() event.dataTransfer.setData('text/plain', 'ドラッグするテキスト'); 上記のコードは、現在のドラッグ イベントにプレーン テキスト データを追加します。 このメソッドは 2 つのパラメータを受け入れます。どちらも文字列です。最初のパラメータはデータ型 ( テキスト ボックスをドラッグするか、選択したテキストをドラッグすると、手動で指定しなくても、対応するテキスト データがデフォルトで <div ドラッグ可能="true"> ああ </div> 上記のコードでは、この 元のデータを置き換えるには、 <div ドラッグ可能="true" ondragstart="event.dataTransfer.setData('text/plain', 'bbb')" > ああ </div> 上記のコードでは、ドラッグ データは実際には 次は他の種類のデータを追加します。 var dt = イベント.dataTransfer; // リンクを追加 dt.setData('text/uri-list', 'http://www.example.com'); dt.setData('text/plain', 'http://www.example.com'); // HTML コードを追加します dt.setData('text/html', 'Hello there, <strong>stranger</strong>'); dt.setData('text/plain', 'こんにちは、見知らぬ人'); // 画像のURLを追加 dt.setData('text/uri-list', 画像URL); dt.setData('text/plain', イメージURL); 複数の形式のデータを一度に提供できます。 var dt = イベント.dataTransfer; dt.setData('application/x-bookmark', ブックマーク文字列); dt.setData('text/uri-list', 'http://www.example.com'); dt.setData('text/plain', 'http://www.example.com'); 上記のコードでは、同じイベントに 3 種類のデータを保存することで、ドラッグ イベントで異なるオブジェクトに異なる値 データ転送.getData() 以下は、指定されたタイプのデータを取得するために使用される 関数 onDrop(イベント) { var データ = event.dataTransfer.getData('text/plain'); イベントターゲットのテキストコンテンツ = データ; イベントをデフォルトにしない(); } 上記のコードは、ドラッグ イベントのテキスト データを取り出し、それを現在のノードのテキスト コンテンツに置き換えます。ユーザーがリンクをドラッグすると、ブラウザはデフォルトで現在のウィンドウでリンクを開くため、この時点でブラウザのデフォルトの動作もキャンセルする必要があることに注意してください。 関数doDrop(イベント) { var 行 = event.dataTransfer.getData('text/uri-list').split('\n'); for (let 行の行) { リンクを document.createElement('a') とします。 link.href = 行; リンクのテキストコンテンツ = 行; イベントターゲットに子要素を追加します。 } イベントをデフォルトにしない(); } 上記のコードでは、 タイプ値を var link = event.dataTransfer.getData('URL'); 次の例では、複数の種類のデータからデータを抽出します。 関数doDrop(イベント) { var タイプ = event.dataTransfer.types; var サポートされているタイプ = ['text/uri-list', 'text/plain']; types = サポートされているTypes.filter(関数 (値) { types.includes(値) }); (タイプの長さ)の場合{ var データ = event.dataTransfer.getData(types[0]); } イベントをデフォルトにしない(); } データ転送.クリアデータ() イベントデータ転送のクリアデータ('text/uri-list'); 上記のコードは、イベントによって取得された このメソッドはドラッグされたファイルを削除しないため、このメソッドを呼び出した後も、 このメソッドは、ドラッグ操作データを書き込むことができるのはこのときだけなので、 データ転送.setDragImage()ドラッグ プロセス中 ( ここに例があります。 /* HTML コードは次のようになります <div id="drag-with-image" class="dragdemo" draggable="true"> 私を引っ張って </div> */ var div = document.getElementById('画像付きドラッグ'); div.addEventListener('dragstart', 関数(e) { var img = document.createElement('img'); img.src = 'http://path/to/img'; e.dataTransfer.setDragImage(画像, 0, 0); }、 間違い); JavaScript ドラッグタイムケースの詳細な説明に関するこの記事はこれで終わりです。より関連性の高い js ドラッグタイムコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL でテーブルを作成するときの NULL と NOT NULL の使用方法の詳細な説明
>>: Linux 上の LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプト
この投稿では、通知、画像とビデオ、フォーム フィールド、タイトル、段落、箇条書きリスト、ナビゲーショ...
シングルページアプリケーションの特徴「前提:」Web ページには、クリックするとサイト内の他のページ...
コンテナをソートするためにdepends_onを使用しても、コンテナ間の依存関係の問題は完全には解決...
# 以下の例は x64 ビット ランタイム v3.0.0 用です mkdir /runtimes ...
バージョンアップデートにより、元のユーザーのパスワードフィールドがauthentication_st...
この記事の環境はWindows 10、MySQLのバージョンは5.7.12-logです1. 基本的な...
Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...
オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットする...
ハイパーリンク。「リンク」とも呼ばれます。ハイパーリンクは、私たちが閲覧する Web ページのいたる...
この記事の例では、双方向データバインディングを実現するためのjsの具体的なコードを参考までに共有して...
MySQL 外部キー制約の無効化と有効化: MySQL 外部キー制約が有効になっているかどうかは、グ...
% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...
TranslateThis URL: http://translateth.is Google 翻訳...
最終結果はこんな感じです、かわいいでしょう… PS: HTML と CSS の知識があればベストです...
目次物語の始まりvimをインストールし、hadoop-hive.envを編集します。不注意で回避しま...