ドラッグ&ドロップは、HTML5 標準の一部です。
Drag the W3Schools image into the rectangle.
ドラッグ&ドロップは、ごく一般的な機能で、オブジェクトを「つかみ」、別の場所にドラッグします。
HTML5 では、ドラッグ&ドロップは標準の一部で、あらゆる要素をドラッグすることが可能です。
表中の数字は、完全にドラッグ&ドロップをサポートした最初のブラウザのバージョンを示しています。
API | |||||
---|---|---|---|---|---|
ドラッグ&ドロップ | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
簡単なドラッグ&ドロップの例を下に示します:
<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev)
{
ev.preventDefault();
}
function drag(ev)
{
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev)
{
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)"
ondragover="allowDrop(event)"></div>
<img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69">
</body>
</html>
複雑に見えかもしてませんが、ドラッグ&ドロップイベントのすべてを使用しています。
まず最初に:要素をドラッグ可能にするには、draggable 属性を true に設定します:
次に、要素をドラッグしたときにどうするのかを指定します。
上記例では、ondragstart 属性は、どのデータをドラッグするかを指定する drag(event) 関数を呼び出します。
dataTransfer.setData() メソッドは、ドラッグ・データのデータタイプと値を設定します:
この場合、データタイプは "text" で、値は draggable 要素の id("drag1")です。
ondragover イベントは、ドラッグしたデータのドロップできる場所を指定します。
デフォルトでは、データ/要素を他の要素にドロップすることはできません。 ドロップをできるようにするためには、要素のデフォルト処理をさせないようにしなければなりません。
これは、OnDragOver イベントに event.preventDefault() メソッドを呼び出すことにより行います:
ドラッグしたデータをドロップすると、drop イベントが発生します。
上記例では、ondrop 属性は、drop(event) 関数を呼び出します:
コードの説明:
画像を前後にドラッグ
画像を2つの <div> 要素の間を前後にドラッグする方法。