Maison > interface Web > Tutoriel H5 > le corps du texte

Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments

不言
Libérer: 2018-12-01 14:52:08
original
5028 Les gens l'ont consulté

En utilisant la fonction glisser-déposer de HTML5, nous pouvons faire glisser et déposer des éléments de page HTML. Dans l'article précédent, nous avons présenté le code permettant de glisser-déposer un seul élément. Dans le prochain article, nous présenterons le code qui permet de glisser-déposer plusieurs éléments.

Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments

Sans plus tard, regardons directement l'exemple

Exemple 1 : Glissez-déposez plusieurs éléments à l'aide de balises UL

Le code est le suivant :

ListDragDrop.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <link rel="stylesheet" href="ListDragDrop.css"/>
  <script>
    function load() {      
      var delbox = document.getElementById(&#39;del&#39;);
      delbox.addEventListener(&#39;dragover&#39;, onDragOver, false);
      delbox.addEventListener(&#39;drop&#39;, onDrop, false);      
      var elems = document.querySelectorAll(&#39;ul#list1 > li&#39;);      
      for (var i = 0; i < elems.length; i++) {
        el = elems[i];
        el.setAttribute(&#39;draggable&#39;, &#39;true&#39;);
        el.addEventListener(&#39;dragstart&#39;, onDragStart, false);
      }
    }    
function onDragStart(e) {
      e.dataTransfer.effectAllowed = &#39;copy&#39;;
      e.dataTransfer.setData(&#39;text&#39;, this.id);
    }    
function onDragOver(e) {
      e.preventDefault();
    }    
function onDrop(e) {
      if (e.stopPropagation) e.stopPropagation();      
      var eid = e.dataTransfer.getData(&#39;text&#39;);      
      var elem = document.getElementById(eid);
      elem.parentNode.removeChild(elem);
    }  
</script>
</head>
<body onload="load();">
   <div id="del">删除</div>
    <ul id="list1">
      <li id="1">海豚</li>
      <li id="2">鲸鱼</li>
      <li id="3">企鹅</li>
      <li id="4">北极熊</li>
      <li id="5">雪狐</li>
    </ul>
    </ul>
</body>
</html>
Copier après la connexion

ListDragDrop.css

#del{
  width:120px;  
  height:60px;  
  border: solid 2px #ff6a00;
  }
ul#list1 > li {
  display: block;  
  width: 150px;  
  border: 1px solid #808080;
  }
Copier après la connexion

Instructions :

Lors du chargement de la page Exécuter la fonction de chargement. Le code suivant dans la fonction de chargement attribue les événements de glisser-déposer au div [Supprimer]. Lorsqu'un élément est glissé vers la zone Supprimer, la fonction onDragOver est appelée, et lorsqu'il est supprimé, la fonction onDrop est appelée.

var delbox = document.getElementById(&#39;del&#39;);
  delbox.addEventListener(&#39;dragover&#39;, onDragOver, false);
  delbox.addEventListener(&#39;drop&#39;, onDrop, false);
Copier après la connexion

Appelez la méthode querySelectorAll pour obtenir l'élément li dans la balise ul. La boucle for traite à plusieurs reprises le tableau d'éléments obtenu et définit l'attribut "déplaçable" de chaque élément sur true. Ce processus le définit comme un objet déplaçable. Il attribue également un événement dragstart.

var elems = document.querySelectorAll(&#39;ul#list1 > li&#39;);  
for (var i = 0; i < elems.length; i++) {
    el = elems[i];
    el.setAttribute(&#39;draggable&#39;, &#39;true&#39;);
    el.addEventListener(&#39;dragstart&#39;, onDragStart, false);
  }
Copier après la connexion

Lorsque vous faites glisser un élément de liste, la fonction onDragStart suivante sera appelée. Appelez la méthode setData de l'objet dataTransfer pour stocker l'ID de l'élément dans l'objet dataTransfer.

function onDragStart(e) {
      e.dataTransfer.effectAllowed = &#39;copy&#39;;
      e.dataTransfer.setData(&#39;text&#39;, this.id);
    }
Copier après la connexion

Lorsqu'un élément de la liste est glissé dans la zone de dépôt, la fonction onDragOver suivante sera appelée. Puisque DragOver n’a pas de gestion particulière, il appelle la méthode PreventDefault pour annuler l’événement.

function onDragOver(e) {
      e.preventDefault();
    }
Copier après la connexion

Si l'élément de la liste est supprimé dans la zone glisser-déposer, la fonction onDrop peut être appelée. Appelez la méthode stopPropagation pour annuler le traitement des événements. Ensuite, nous obtenons l'ID de l'objet dataTransfer. En obtenant l'ID, vous pouvez récupérer l'élément déposé dans la zone de dépôt. Appelez la méthode getElementById et récupérez l'objet balisé LI à partir de l'ID. En accédant au nœud parent à l'aide de la propriété parentNode de l'objet LI obtenu, en appelant la méthode removeChild, les éléments de la liste supprimée sont supprimés.

function onDrop(e) {      
if (e.stopPropagation) e.stopPropagation();      
var eid = e.dataTransfer.getData(&#39;text&#39;);      
var elem = document.getElementById(eid);
      elem.parentNode.removeChild(elem);
    }
Copier après la connexion

Résultat d'exécution :

Utilisez un navigateur Web pour afficher le fichier HTML ci-dessus. L'effet illustré ci-dessous sera affiché.

Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments

Les éléments de la liste en bas de la page peuvent être déplacés. Par exemple, faites glisser l'élément « Penguin » vers la zone de suppression, et il n'y aura alors pas de troisième élément « Penguin » dans la liste des éléments ci-dessous. L'effet spécifique est celui indiqué dans la figure ci-dessous

Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments.

Comment utiliser HTML5 pour implémenter la fonctionnalité glisser-déposer pour plusieurs éléments

Faites glisser d'autres éléments pour avoir le même effet, et les cinq éléments peuvent être supprimés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal