Bonjour, cher amoureux du code ! 👋
Aujourd’hui, nous allons débloquer le magicien caché du navigateur : Drag & Drop !
Ça semble simple, mais c’est en réalité une fonctionnalité qui gamifie l’expérience utilisateur, donne vie à votre page et fait de vous un véritable sorcier JS. 🪄💖
Rappelez-vous le dicton : « Apprenez en jouant avec la souris : faites glisser les fichiers, déposez-les dans des boîtes et faites de la magie avec JS ! » Aujourd’hui, nous allons nous amuser et acquérir des connaissances pratiques. 😎
1️⃣ Qu’est-ce que le Drag & Drop et pourquoi est-ce important ? 💌
Drag & Drop permet aux utilisateurs de cliquer et de faire glisser un élément pour le déposer ailleurs, grâce à HTML + JS.
Avantages :
- Rend l’expérience utilisateur ludique et interactive 🎮
- Idéal pour les formulaires, les téléchargements de fichiers, les mini-jeux et les listes 📝
- Code simple, effet énorme ✨
Astuce :
- Pensez au-delà de la souris : pour les écrans tactiles, utilisez les événements
touchstartettouchendpour rendre le Drag & Drop compatible mobile.
2️⃣ Structure HTML de base 🔧
Créons d’abord une boîte simple à glisser-déposer :
<div id="source" draggable="true"
style="width:100px;height:100px;background:red;margin:10px;color:white;display:flex;align-items:center;justify-content:center;">
Glisse-moi !
</div>
<div id="target"
style="width:150px;height:150px;background:lightblue;margin:10px;display:flex;align-items:center;justify-content:center;">
Dépose ici
</div>
🎨 Explication :
draggable="true"rend l’élément déplaçable.- Le CSS rend les boîtes claires et visuellement attrayantes.
Astuce :
- Ajoutez un effet hover pour donner un indice visuel à l’utilisateur :
#target:hover {
border: 2px dashed darkblue;
}
3️⃣ Magie JavaScript de base 🪄
Ajoutons maintenant la fonctionnalité Drag & Drop avec JS :
<script>
const source = document.getElementById("source");
const target = document.getElementById("target");
// Lorsque le glissement commence
source.addEventListener("dragstart", e => {
e.dataTransfer.setData("text/plain", e.target.id);
console.log("Glissement commencé !");
});
// Autoriser le drop sur la cible
target.addEventListener("dragover", e => e.preventDefault());
// Lorsque l’élément est déposé
target.addEventListener("drop", e => {
e.preventDefault();
const id = e.dataTransfer.getData("text/plain");
const elem = document.getElementById(id);
target.appendChild(elem);
console.log("Félicitations ! Vous avez déposé l’élément 😍");
});
</script>
💡 Astuces :
e.preventDefault()dansdragoverest obligatoire, sinon le drop ne fonctionne pas.dataTransferpermet de transférer plusieurs types de données (texte, HTML, etc.).
4️⃣ Gamification avec plusieurs éléments 🚀
Maintenant, on peut glisser et déposer plusieurs éléments. Exemple :
<div class="item" draggable="true" style="width:80px;height:80px;background:orange;margin:5px;display:flex;align-items:center;justify-content:center;">1</div>
<div class="item" draggable="true" style="width:80px;height:80px;background:green;margin:5px;display:flex;align-items:center;justify-content:center;">2</div>
<div id="target2" style="width:200px;height:200px;background:lightgreen;margin:10px;display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:flex-start;">
Dépose ici !
</div>
<script>
const items = document.querySelectorAll(".item");
const target2 = document.getElementById("target2");
items.forEach(item => {
item.addEventListener("dragstart", e => {
e.dataTransfer.setData("text/plain", e.target.innerText);
});
});
target2.addEventListener("dragover", e => e.preventDefault());
target2.addEventListener("drop", e => {
e.preventDefault();
const data = e.dataTransfer.getData("text/plain");
const newItem = document.createElement("div");
newItem.innerText = data;
newItem.style.width = "80px";
newItem.style.height = "80px";
newItem.style.background = "#FF69B4";
newItem.style.margin = "5px";
newItem.style.display = "flex";
newItem.style.alignItems = "center";
newItem.style.justifyContent = "center";
target2.appendChild(newItem);
console.log(`Élément ${data} déposé ! 🎉`);
});
</script>
🎯 Explication :
- Les utilisateurs peuvent maintenant glisser et déposer plusieurs éléments.
- Le style rend l’expérience plus visuelle et amusante.
5️⃣ Astuces avancées 💖
Effets hover :
- Mettez en surbrillance la zone cible lorsque l’utilisateur fait glisser un élément dessus :
#target2:hover {
border: 3px dashed purple;
background-color: lightyellow;
}
Ajouter des animations :
- Transitions douces avec CSS :
.item, #target2 div {
transition: all 0.3s ease;
}
Transférer différents types de données :
- Transférer du contenu HTML :
dataTransfer.setData("text/html", "<b>Bold</b>");
Support mobile :
- Ajoutez les événements tactiles :
touchstart,touchmove,touchend.
Gestion des erreurs :
- Autorisez uniquement certains éléments à être déposés :
if(e.dataTransfer.getData("text/plain") === "1") { ... }
6️⃣ Idée de mini projet 🏆
Gamifions un peu :
- 3 boîtes de couleurs différentes (1,2,3)
- Déposer dans la cible → +1 point
- Chaque dépôt déclenche une animation amusante (agrandir/rétrécir)
- Enregistrer le score total dans LocalStorage
Ainsi, vous pratiquez JS et HTML tout en créant une expérience interactive 😍
7️⃣ Conclusion : Faites de la magie avec la souris ! 🖱️✨
Drag & Drop rend votre page vivante, interactive et amusante.
Maintenant, vous pouvez :
- Créer des interactions gamifiées pour les utilisateurs 🎮
- Construire des expériences simples mais puissantes avec HTML + JS
- Faire de votre page un moment “wow !” avec le Drag & Drop 😎
💡 Astuce : Vous pouvez également utiliser cette logique pour des listes triables, des téléchargements de fichiers et des mini-jeux.

