今回は、A~Dまでのアルファベット画像をシアンからイエローへドラッグ&ドロップで移動できるコンテンツをつくります。
↓デモページのサンプルコードは以下となります。
▼HTML
<div class="boxdrag" id="dropbox">
<img src="img/a.png" id="a" alt="a" />
<img src="img/b.png" id="b" alt="b" />
<img src="img/c.png" id="c" alt="c" />
<img src="img/d.png" id="d" alt="d" />
</div>
<div class="boxdrag" id="drop"></div>
▼CSS
<style>
div.boxdrag {
width: 100%;
height: 100px;
}
div#dropbox {
background-color: #80ffff;
}
div#drop {
background-color: #ffff80;
}
div.boxdrag img {
width: 100px;
height: 100px;
}
</style>
DataTransfer.getData()のメソットについて詳しく知りたいという方は下記ページもご覧ください。色分けされていてどこが記述されているのかわかりやすいです。DataTransfer.getData()
▼Javascript
<script>
let getElem = document.getElementsByTagName("img");
for (let i = 0; i < getElem.length; i++) {
getElem[i].addEventListener(
"dragstart",
function (evt) {
evt.dataTransfer.setData("text/plain", evt.target.id);
evt.stopPropagation();
},
false
);
}
let item1 = document.getElementById("drop");
item1.addEventListener(
"drop",
function (evt) {
let data = evt.dataTransfer.getData("text/plain");
let item2 = document.getElementById(data);
if (item2) {
item1.appendChild(item2);
}
evt.preventDefault();
},
false
);
item1.addEventListener(
"dragenter",
function (evt) {
evt.preventDefault();
},
false
);
item1.addEventListener(
"dragover",
function (evt) {
evt.preventDefault();
},
false
);
</script>
今回、参考にさせていただいたのは、 『複数のドラッグ要素を扱う-パズルネット 智慧(ソフィア)』さんです。 ありがとうございます。
