Hello wizards, I hope you are doing great. Today in this blog you’ll learn how to create the "Drag and Drop List" project using HTML, CSS & JavaScript.
Preview
In the above video, you’ve seen the preview of the "Drag and Drop List" project and I hope now you are able to create this type of project. If not, I have provided all the HTML CSS, and JavaScript code below.
Drag and Drop List [Source Code]
To get the following HTML, CSS & JS code for the Drag and Drop List project. You need to create three files one is an HTML file, the second one is a CSS file and another one is a JS file. After creating these three files then you can copy-paste the given codes on your document.
Remember, you’ve to create a file with a .html extension for HTML code, a .css extension for CSS code, and .js for JavaScript code.
You can also download all source code files from the given download button.
<!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>Drag and Drop List</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css"> </head> <body> <h1>Drag and Drop List</h1> <ul class="listItems"> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/1.jpg"> <span>Developer pani</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/2.jpg"> <span>Tester Tilak</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/3.jpg"> <span>BlockChain Bharath</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/4.jpg"> <span>Hacker Harshitha</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/5.jpg"> <span>Programmer Parvathi</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/6.jpg"> <span>AI Anusha</span> </div> <i class="uil uil-draggabledots"></i> </li> <li class="item" draggable="true"> <div class="itemContent"> <img src="images/7.jpg"> <span>Designer Divya</span> </div> <i class="uil uil-draggabledots"></i> </li> </ul> <script src="index.js"></script> </body> </html>
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap"); * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } body { display: flex; justify-content: center; align-items: center; flex-direction: column; min-height: 100vh; background: lightgoldenrodyellow; } h1 { font-size: 28px; font-weight: 600; margin-bottom: 10px; } .listItems { width: 420px; padding: 25px; background: white; border-radius: 7px; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); list-style: none; } .item { background: white; align-items: center; border-radius: 5px; padding: 10px; margin: 10px; border: 2px solid black; display: flex; justify-content: space-between; cursor: grab; } .item .itemContent { display: flex; align-items: center; justify-content: center; gap: 20px; } .item .itemContent img { height: 45px; width: 45px; border-radius: 50%; object-fit: cover; pointer-events: none; } .item .itemContent span { font-size: 20px; } .item i { color: black; font-size: 18px; } .item.dragging { opacity: 0.4; } .item.dragging .itemContent, .item.dragging i { opacity: 0; }
const listItemsEl = document.querySelector(".listItems"); const itemsEl = listItemsEl.querySelectorAll(".item"); itemsEl.forEach(item => { item.addEventListener("dragstart", () => { setTimeout(() => item.classList.add("dragging"), 0); }); item.addEventListener("dragend", () =>item.classList.remove("dragging")); }); const initSortableList = (e) => { e.preventDefault(); const draggingItem = document.querySelector(".dragging"); let siblings = [...listItemsEl.querySelectorAll(".item:not(.dragging)")]; let nextSibling = siblings.find(sibling => { return e.clientY <= sibling.offsetTop + sibling.offsetHeight / 2; }); listItemsEl.insertBefore(draggingItem, nextSibling); } listItemsEl.addEventListener("dragover", initSortableList); listItemsEl.addEventListener("dragenter", e => e.preventDefault());