HTML5 fournit une API Drags-et-Drop, qui est grandement pratique pour nous pour réaliser l'effet de traînée et de dépôt. pour atteindre diverses fonctions de glisser-déposer.
Si vous souhaitez faire glisser et supprimer un certain élément, vous devez définir la propriété draggable de l'élément sur true. Les éléments IMG et les éléments sont définis avec des attributs draggables à true, qui peuvent être directement traînés et abandonnés.
Faire glisser et laisser tomberLes incidents de glisser-déposer sont générés par différents éléments. Un élément est traîné et tombé, et il pourrait éventuellement atteindre l'élément qu'il veut placer sur de nombreux éléments. Ici, je me réfère temporairement à l'élément de la traînée et de la chute et de l'élément du processus, et l'élément que j'ai atteint est appelé l'objet cible. Différents objets ont différents événements de glisser-déposer.
Objet source:
Objet de processus:
Objet cible:
<div id = source draggable = true> un élément </ div> <div id = process> b élément </div> <div id = cible> c élément </div> <cript> var source = document.getElementByid '( 'Source'), // un élément proces = document.getElementById ('process'), // b cible = document.gementById ('cible'); Les événements de dragstart sont générés par l'élément A pour générer console.log ('un élément commence à être gêné');}, false) proces.adDeventRristEner ('Dragner', fonction (ev) {// L'événement dragsenter est généré par le b élément. , False) Target.adDeventListener ('Drop', fonction (ev) {// L'événement Drop est généré par console.log ('un élément a un élément c');) document.ondragover = function (e) {e.PreventDefault ( );} </ script>Objet DataTransfer
Un DataTransfer d'objets de transmission de données est fourni dans tous les événements glisser-et-Drop pour transmettre des données entre les objets source et les objets cibles. Ensuite, apprenez à connaître les méthodes et les attributs de cet objet pour comprendre comment il transmet des données.
setData ()Cette méthode est stockée dans l'objet Datatransfer. Recevez deux paramètres, le premier indique une chaîne pour stocker le type de données, et prend maintenant en charge les éléments suivants:
Le deuxième paramètre est les données à stocker. Par exemple:
event.datatransfer.setData («texte / plaine», «bonjour monde»);getData ()
Cette méthode lit les données de l'objet DataTransfer. Le paramètre est le type de données spécifié dans SetData. Par exemple:
event.datatransfer.getData ('texte / plaine');ClearData ()
Cette méthode supprime les données stockées dans l'objet Datatransfer. Les paramètres sont facultatifs, pour les types de données. Si les paramètres sont vides, effacez tous les types de données. Par exemple:
event.datatransfer.cleardata ();setDragimage ()
Cette méthode est définie sur les icônes glisser-déposer en utilisant des éléments IMG. Recevez les trois paramètres, le premier est l'élément icône, le second est le déplacement de l'axe x de l'élément icône du pointeur de la souris, et le troisième est le déplacement de l'axe y de l'élément icône du pointeur de la souris. Par exemple:
Var source = document.getElementyid ('source'), icône = document.CreateElement ('img'); icon.src = 'img.png'; 10, -10)}, faux)Effets
Ces deux attributs sont combinés pour définir l'effet visuel de la traînée et de la chute.
Il convient de noter que IE ne prend pas en charge l'objet Datatransfer. Oui, peu importe quelle version IE est prise en charge.
Implémentez le tri de glisser-déposerL'utilisation des API Drag and Drop connaît déjà ce qui précède. Jetons un coup d'œil à l'idée d'abord:
Le code principal est le suivant:
var source = document.QuerySelectiverall ('. list'), drageelement = null; ) {drageelement = this;}, false); source [i] .adDeventListener ('dragenter', function (ev) {if (drageelement! = this) {this.parentNodefore [i] .addeventListener ('dragleave', function (ev) {if (drageelement! = this) {if (this == this.parentnode.lastelementchildchild || this.parentNod e.lastchild) {this.parentNode.ApendChild (draglements );}}, false)};
Adresse de code complète: Drag-Demo
compatibleIl est principalement compatible dans IE, mais au moins il peut être traîné et trié au moins dans IE10.
Et dans mon test simple, on constate que lorsque les éléments ne sont pas définis dans IE, l'événement DragLeave ne sera pas déclenché.
Le point le plus important est sur iOS et Android, ce qui est complètement incompatible. Heureusement, il y a un plug -in pour le rendre parfaitement compatible à l'extrémité mobile.
Adresse du plug-in: iOS-HTML5-Drag-Drop-Shim
Il vous suffit d'introduire la fiche dans le code d'origine pour le faire glisser sur le terminal mobile.
<Script> var iOSDragDropShim = {autorisationLave: true} </ script> <script src = vendor / ios-drop.js> </ script>
Ce qui précède est tout le contenu de cet article.