--- title: DataTransfer.setDragImage() slug: Web/API/DataTransfer/setDragImage tags: - API - H5 DnD - HTML DOM - Method - Reference - drag and drop translation_of: Web/API/DataTransfer/setDragImage ---
ドラッグが発生すると、ドラッグ対象 ({{event("dragstart")}} イベントが発生した要素) から半透明の画像が生成され、ドラッグ中にマウスポインタに沿って移動します。この画像は自動的に作成されるので、自分で作成する必要はありません。ただし、カスタム画像が必要な場合は、DataTransfer.setDragImage()
メソッドを使用して、使用するカスタム画像を設定することができます。画像は通常、{{HTMLElement("image")}} 要素になりますが、{{HTMLElement("canvas")}} やその他の可視要素であっても構いません。
メソッドの x
座標と y
座標は、マウスポインタに対する画像の相対的な表示方法を定義します。これらの座標は、マウスカーソルがあるべき画像のオフセットを定義します。例えば、ポインタが中心に来るように画像を表示するには、画像の幅と高さの半分の値を使用します。
このメソッドは {{event("dragstart")}} イベントハンドラ内で呼び出す必要があります。
void dataTransfer.setDragImage(img | element, xOffset, yOffset);
long
。long
。この例では、setDragImage()
メソッドの使用方法を示します。この例では example.gif
という名前の画像ファイルを参照していることに注意しましょう。そのファイルが存在する場合はそのファイルがドラッグ画像として使用され、そのファイルが存在しない場合はブラウザがデフォルトのドラッグ画像を使用します。
<!DOCTYPE html> <html lang=ja> <title>DataTransfer.setDragImage() の例</title> <meta name="viewport" content="width=device-width"> <style> div { margin: 0em; padding: 2em; } #source { color: blue; border: 1px solid black; } #target { border: 1px solid black; } </style> <script> function dragstart_handler(ev) { console.log("dragStart"); // ドラッグのフォーマットとデータを設定します。データにはイベントターゲットの ID を使用します。 ev.dataTransfer.setData("text/plain", ev.target.id); // 画像を作成してドラッグ画像に使用する // 注意: "example.gif" を既存の画像に変更しないと画像が作成されず、 // デフォルトのドラッグ画像が使用されます。 var img = new Image(); img.src = 'example.gif'; ev.dataTransfer.setDragImage(img, 10, 10); } function dragover_handler(ev) { console.log("dragOver"); ev.preventDefault(); } function drop_handler(ev) { console.log("Drop"); ev.preventDefault(); // ドロップ対象のIDであるデータを取得します。 var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); } </script> <body> <h1><code>DataTransfer.setDragImage()</code> の例</h1> <div> <p id="source" ondragstart="dragstart_handler(event);" draggable="true"> この要素を選択し、ドロップゾーンにドラッグしてから選択を解除して要素を移動します。</p> </div> <div id="target" ondrop="drop_handler(event);" ondragover="dragover_handler(event);">ドロップゾーン</div> </body> </html>
仕様書 | ステータス | コメント |
---|---|---|
{{SpecName('HTML WHATWG', 'interaction.html#dom-datatransfer-setdragimage','setDragImage()')}} | {{Spec2('HTML WHATWG')}} | |
{{SpecName('HTML5.1', 'editing.html#dom-datatransfer-setdragimage','setDragImage()')}} | {{Spec2('HTML5.1')}} | W3C HTML5 に含まれない {{Spec2('HTML5 W3C')}}。 |
{{Compat("api.DataTransfer.setDragImage")}}
{{page("/ja/docs/Web/API/DataTransfer", "あわせて参照")}}