Drag and Dropを使用してWebアプリケーションのインタラクティブな体験を向上
5544 ワード
Drag and Drop
(ドラッグ&ドロップ)とは?簡単に言えば、HTML 5は
Drag and Drop
APIを提供し、ユーザーがマウスでドラッグ可能な要素を選択し、マウスを移動して要素にドラッグできるプロセスを提供している.ブラウザの複数のラベルページ間のドラッグアンドドロップ可能なソート、携帯電話のAppのドラッグアンドドロップ可能なソートなど、誰もがドラッグアンドドロップに接触したことがあると信じています.
Drag and Drop
より便利で柔軟なネットワークアプリケーション体験を提供しています.HTML5 Drag and Drop
DnD
イベントベースのドラッグアンドドロップメカニズムとタグ付けを定義し、ページ上のほとんどの要素をタグ付けするdraggable
の要素タイプ、典型的なdrag
操作は、ユーザーがマウスでドラッグ可能な要素を選択し、マウスを配置可能な要素に移動し、マウスを解放することから始まる.操作中にイベントタイプがトリガーされ、dragやdragoverイベントタイプなど、複数回トリガーされるイベントタイプがあります.まとめると簡単です.
Drag Source(What to drag) => Drop Target(Where to drop)
ドラッグイベント
すべてのドラッグイベントは1つ
global event handler
、Dnd APIは1つに8つのイベントがあり、Drag Sourceにバインドされた3つ、Drag Targetにバインドされた5つに分けられるDrag Source
Event
Description
dragstart
ユーザーが要素または選択したテキストをドラッグし始めるとトリガーされます.
drag
要素または選択したテキストをドラッグするとトリガーされます.
dragend
ドラッグ操作が終了するとトリガーされます(マウスボタンを放したり、Escキーを押したりします).
Drop Target
Event
Description
dragenter
エレメントまたは選択したテキストを解放可能なターゲットにドラッグするとトリガーされます.
dragover
要素または選択したテキストが解放可能なターゲットにドラッグされるとトリガーされます(100ミリ秒ごとにトリガーされます).
dragexit
要素がドラッグ操作の選択されたターゲットでなくなったときにトリガーされます.
dragleave
要素をドラッグしたり、選択したテキストが解放可能なターゲットから離れたりするとトリガーされます.
drop
エレメントまたは選択したテキストが解放可能ターゲットで解放されるとトリガーされます.
注意点
drag
およびdragover
).使用時のブレや絞りに注意dragover
イベントで使用event.preventDefault()
デフォルトのイベント行為を阻止した場合にのみ、正しくトリガーされるdrop
イベントevent.preventDefault()
デフォルトのイベント動作をブロックし、新しいラベルが開かないようにするHTMLドラッグのデータインタフェースは3つ
DataTransfer
・DataTransferItem
とDataTransferItemList
があります.ドラッグ&ドロップ操作を行う場合、
DataTransfer
オブジェクトを保存し、ドラッグ&ドロップ操作でブラウザのデータにドラッグします.1つ以上のデータ、1つ以上のデータ型、または複数のデータ型を保存できます.DataTransfer共通プロパティ
ツールバーの
を選択します.
説明
dropEffect
String
実際の配置効果を取得/設定するには、常にeffectAllowedの可能な値の1つに設定する必要があります.
copy
move
link
・none
・effectAllowed
String
ドラッグ時に許可される効果を指定します.
Files
FileList
格納されたデータのタイプリストを最初の項目として保存し、追加されたデータの順序と一致します.データが追加されていない場合は、空のリストが返されます.
types
DOMStringList
データ転送で使用可能なすべてのローカルファイルのリストが含まれます.ドラッグ操作がファイルのドラッグに関係しない場合、このプロパティは空のリストです.
DataTransferの一般的な方法
void clearData([in String type])
String getData(in String type)
void setData(in String type, in String data)
void setDragImage(in nsIDOMElement image, in long x, in long y)
注意点
MIME
(Multipurpose Internet Mail Exchange)でデータ転送タイプを指定します.例えば:text/plain
HTML 5 DnD APIを用いて実現したい豊富なインタラクティブなアプリケーションを想像してみてください.結局ブラウザがサポートされていないので、大変ではないでしょうか.ダウングレードスキームを使用する必要があるかどうかは、非常に重要な参考になります.
次の2つの一般的な方法で検出を支援します.
caniuse
Modernizr
Modernizrは、ユーザーブラウザが
HTML5
およびCSS3
機能をサポートしているかどうかを検出するのに優れたライブラリです.if (Modernizr.draganddrop) {
// Browser supports HTML5 DnD.
} else {
// Fallback to a library solution.
}
ドラッグ&ドロップを実現
HTML Attribute
ドラッグエレメントを実現するにはdomタグにのみ
draggable="true"
CSS User Interface
user-select
可拖拽元素,建议使用 user-select
,避免用户在拖拽时选取到内部元素。
[draggable="true"] {
/*
To prevent user selecting inside the drag source
*/
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
cursor
ドラッグ可能エレメント、推奨使用
cursor
、ドラッグ可能エレメントのマウスカーソルを設定し、インタラクションを向上させる.[draggable="true"] {
cursor: move;
}
Vueでドラッグ&ドロップを使用する
Vueでdndを使用すると、
event
コンポーネントに直接バインドできます.次の栗の内容は次のとおりです.
DnDは何ができますか?
リファレンス
Mozilla HTML_Drag_and_Drop_API
Native HTML5 Drag and Drop
caniuse
Working with HTML5 Drag-and-Drop
译文:Drag and Dropを使用してWebアプリケーションにインタラクティブな体験を向上させる