parent
bc58937edc
commit
eafca9af7d
@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>21 drag n drop</title>
|
||||
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="empty">
|
||||
<div class="fill" draggable='true'></div>
|
||||
</div>
|
||||
<div class="empty"></div>
|
||||
<div class="empty"></div>
|
||||
<div class="empty"></div>
|
||||
<div class="empty"></div>
|
||||
|
||||
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,39 @@
|
||||
const fill = document.querySelector(".fill");
|
||||
const empties = document.querySelectorAll(".empty");
|
||||
|
||||
fill.addEventListener("dragstart", dragStart);
|
||||
fill.addEventListener("dragend", dragEnd);
|
||||
|
||||
for (const empty of empties) {
|
||||
empty.addEventListener("dragover", dragOver);
|
||||
empty.addEventListener("dragenter", dragEnter);
|
||||
empty.addEventListener("dragleave", dragLeave);
|
||||
empty.addEventListener("drop", dragDrop);
|
||||
}
|
||||
|
||||
function dragStart() {
|
||||
this.className += " hold";
|
||||
setTimeout(() => (this.className = "invisible"), 0);
|
||||
}
|
||||
|
||||
function dragEnd() {
|
||||
this.className = "fill";
|
||||
}
|
||||
|
||||
function dragOver(e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
function dragEnter(e) {
|
||||
e.preventDefault();
|
||||
this.className += " hovered";
|
||||
}
|
||||
|
||||
function dragLeave() {
|
||||
this.className = "empty";
|
||||
}
|
||||
|
||||
function dragDrop() {
|
||||
this.className = "empty";
|
||||
this.append(fill);
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100vh;
|
||||
background-color: deepskyblue;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.empty {
|
||||
height: 150px;
|
||||
width: 150px;
|
||||
border: 3px solid black;
|
||||
background-color: #fff;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.fill {
|
||||
background-image: url("https://source.unsplash.com/random/150x150");
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.hold {
|
||||
border: 5px solid #ccc;
|
||||
}
|
||||
|
||||
.hovered {
|
||||
background: #333;
|
||||
border-color: white;
|
||||
border-style: dashed;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
body {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue