Baseline Widely available
drag
ã¤ãã³ãã¯ãè¦ç´ ã鏿ãããããã¹ããã¦ã¼ã¶ã¼ããã©ãã°ãã¦ããéã«ãæ°ç¾ããªç§ãã¨ã«çºçãã¾ãã
ãã®ã¤ãã³ãã¯ãã£ã³ã»ã«å¯è½ã§ãDocument
ãªãã¸ã§ã¯ã㨠Window
ãªãã¸ã§ã¯ãã¾ã§ããã«ã¢ããããå¯è½æ§ãããã¾ãã
ãã®ã¤ãã³ãåã addEventListener()
ã®ãããªã¡ã½ããã§ä½¿ç¨ããããã¤ãã³ããã³ãã©ã¼ããããã£ãè¨å®ããããã¾ãã
addEventListener("drag", (event) => {});
ondrag = (event) => {};
ã¤ãã³ãå ã¤ãã³ãããããã£
以ä¸ã«æããããããã£ã«å ãã¦ã親ã§ãã Event
ããç¶æ¿ããããããã£ãããã¾ãã
DragEvent.dataTransfer
èªåå°ç¨
ãã©ãã°ï¼ããããæä½ã®éã«è»¢éããããã¼ã¿ã§ãã
<div class="dropzone">
<div id="draggable" draggable="true">ãã® div ã¯ãã©ãã°å¯</div>
</div>
<div class="dropzone" id="droptarget"></div>
CSS
body {
/* ãã®ä¾ã®ä¸ã§ã¦ã¼ã¶ã¼ã«ããããã¹ãã®é¸æã鲿¢ãã */
user-select: none;
}
#draggable {
text-align: center;
background: white;
}
.dropzone {
width: 200px;
height: 20px;
background: blueviolet;
margin: 10px;
padding: 10px;
}
.dropzone.dragover {
background-color: purple;
}
.dragging {
opacity: 0.5;
}
JavaScript
let dragged;
/* ãã©ãã°å¯è½ãªã¿ã¼ã²ããä¸ã§çºçããã¤ãã³ã */
const source = document.getElementById("draggable");
source.addEventListener("drag", (event) => {
console.log("dragging");
});
source.addEventListener("dragstart", (event) => {
// ãã©ãã°ä¸ã®è¦ç´ ã®åç
§ãä¿å
dragged = event.target;
// åéæã«ãã
event.target.classList.add("dragging");
});
source.addEventListener("dragend", (event) => {
// éæåº¦ãè§£é¤
event.target.classList.remove("dragging");
});
/* ãããã対象ã«çºçããã¤ãã³ã */
const target = document.getElementById("droptarget");
target.addEventListener(
"dragover",
(event) => {
// ããããã§ããããã«æ¢å®ã®åä½ã忢
event.preventDefault();
},
false,
);
target.addEventListener("dragenter", (event) => {
// ãã©ãã°å¯è½ãªè¦ç´ ãããããå
ã«å
¥ã£ãã¨ãã«ãããããå
ã®åè£ã強調表示ãã
if (event.target.classList.contains("dropzone")) {
event.target.classList.add("dragover");
}
});
target.addEventListener("dragleave", (event) => {
// ãã©ãã°å¯è½ãªè¦ç´ ãããããå
ããé¢ããã¨ãã«ãããããå
ã®åè£ã®èæ¯ããªã»ãããã
if (event.target.classList.contains("dropzone")) {
event.target.classList.remove("dragover");
}
});
target.addEventListener("drop", (event) => {
// æ¢å®ã®åä½ï¼ä¸é¨ã®è¦ç´ ã§ãªã³ã¯ã¨ãã¦éãï¼ãè¡ããªãããã«ããã
event.preventDefault();
// ãã©ãã°ããè¦ç´ ã鏿ãããããããã¿ã¼ã²ããã«ç§»åãã
if (event.target.classList.contains("dropzone")) {
event.target.classList.remove("dragover");
event.target.appendChild(dragged);
}
});
çµæ 仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4