ドラッグとドロップの違い
サイト上でのドラッグとドロップの違いをみていきましょう。
まずドラッグとは要素などをマウスでつかんで動かすことです。
そしてドロップとはその動かした要素をドロップ先に配置させることになります。
ドラッグ&ドロップさせる方法
それではドラッグ&ドロップさせてみましょう。
html
<p>下の三つの要素を灰色のボックスにドラッグしてください。</p>
<ul ondragover="d_over(event)" ondrop="f_drop(event)">
<li draggable="true" id="text1" ondragstart="d_start(event)">ドラッグ1</div>
<li draggable="true" id="text2" ondragstart="d_start(event)">ドラッグ2</div>
<li draggable="true" id="text3" ondragstart="d_start(event)">ドラッグ3</div>
</ul>
<ul class="dropbox" ondragover="d_over(event)" ondrop="f_drop(event)"></ul>
css
ul{
display: flex;
margin: 30px 0;
padding: 0;
list-style: none;
}
ul li{
margin: 10px;
padding: 10px;
border: solid 1px #000;
background: #fff;
}
.dropbox{
border: solid 1px #000;
padding: 10px;
min-height: 46px;
background: #eee;
}
javascript
function d_start(event){
event.dataTransfer.setData("text", event.target.id);
}
function d_over(event){
event.preventDefault();
}
function f_drop(event){
let name = event.dataTransfer.getData("text");
let elm =document.getElementById(name);
event.currentTarget.appendChild(elm);
event.preventDefault();
}
補足
html5からdraggable属性を指定することで要素をドラッグさせることができます。
<li draggable="true">ドラッグ1</div>
dataTransfer.setData
dataTransfer.setDataはドラッグする要素のデータを取得させることができます。
上記の例ではドラッグさせる要素のidを取得してDataTransferオブジェクトにセットしています。
preventDefault
preventDefaultはイベントにたいしてブラウザ上でデフォルトで設定されている動作をキャンセルさせることができます。
event.dataTransfer.getData
ドラッグされた要素のidをDataTransferオブジェクトから取得します。
サンプル
コメント