Table des matières
Avant-propos
Événements glisser-déposer
objet dataTransfer
setData()" >setData()
getData()
clearData()" >clearData()
setDragImage()
Alldue et dropEffect " >effectAlldue et dropEffect
Implémentation du tri par glisser-déposer
兼容
更多文章:lin-xin/blog
Maison interface Web Tutoriel H5 L'API glisser-déposer implémente le tri par glisser-déposer

L'API glisser-déposer implémente le tri par glisser-déposer

May 28, 2017 am 11:11 AM
api

Avant-propos

HTML5 fournit une API de glisser-déposer direct, ce qui nous facilite grandement l'obtention de l'effet glisser-déposer sans avoir à écrire beaucoup de code. js, vous pouvez implémenter diverses fonctions de glisser-déposer simplement en écoutant l'événement glisser-déposer de l'élément.

Si vous souhaitez glisser et déposer un élément, vous devez définir l'attribut déplaçable de l'élément sur true. Lorsque cet attribut est faux, le glisser-déposer ne sera pas autorisé. L'élément img et l'élément a ont tous deux l'attribut draggable défini sur true par défaut, ils peuvent donc être glissés et déposés directement. Si vous ne souhaitez pas glisser-déposer ces deux éléments, définissez simplement l'attribut sur false.

Événements glisser-déposer

Les événements glisser-déposer sont générés par différents éléments. Lorsqu'un élément est glissé-déposé, il peut traverser de nombreux éléments avant d'atteindre finalement l'élément que vous souhaitez placer. Ici, j'appelle temporairement l'élément glissé-déposé l'objet source , l'élément passé est appelé l'objet de processus et l'élément arrivé est appelé l'objet cible. Différents objets génèrent différents événements de glisser-déposer.

Objet source :

  • dragstart : L'objet source commence à glisser-déposer.

  • glisser : pendant le processus de glisser-déposer de l'objet source.

  • glisserfin : Le glisser-déposer de l'objet source se termine.

Objet de processus :

  • dragenter : L'objet source commence à entrer dans la portée de l'objet de processus.

  • dragover : L'objet source se déplace dans la portée de l'objet processus.

  • dragleave : L'objet source quitte la portée de l'objet processus.

Objet cible :

  • drop : L'objet source est glissé et déposé dans l'objet cible.


<p id="source" draggable="true">a元素</p><p id="process">b元素</p><p id="target">c元素</p><script>
    var source = document.getElementById(&#39;source&#39;),     // a元素
        process = document.getElementById(&#39;process&#39;),   // b元素
        target = document.getElementById(&#39;target&#39;);     // c元素
    
    source.addEventListener(&#39;dragstart&#39;,function(ev){   // dragstart事件由a元素产生
        console.log(&#39;a元素开始被拖动&#39;);
    },false)    process.addEventListener(&#39;dragenter&#39;,function(ev){  // dragenter事件由b元素产生
        console.log(&#39;a元素开始进入b元素&#39;);
    },false)    process.addEventListener(&#39;dragleave&#39;,function(ev){  // dragleave事件由b元素产生
        console.log(&#39;a元素离开b元素&#39;);
    },false)    target.addEventListener(&#39;drop&#39;,function(ev){        // drop事件由c元素产生
        console.log(&#39;a元素拖放到c元素了&#39;);
        ev.preventDefault();
    },false)    document.ondragover = function(e){e.preventDefault();}</script>
Copier après la connexion


objet dataTransfer

fournit un L'objet de transfert de données dataTransfer est utilisé pour transférer des données entre l'objet source et l'objet cible. Voyons ensuite les méthodes et les propriétés de cet objet pour comprendre comment il transfère les données.

setData()

Cette méthode stocke les données dans l'objet dataTransfer. Reçoit deux paramètres. Le premier est une chaîne indiquant le type de données à stocker. Actuellement, les types suivants sont pris en charge :

  • text/plain : texte texte. .

  • text/html : texte HTML.

  • text/xml : texte XML.

  • text/uri-list : liste d'URL, chaque URL est une ligne.

Le deuxième paramètre est les données à stocker. Par exemple :


event.dataTransfer.setData(&#39;text/plain&#39;,&#39;Hello World&#39;);
Copier après la connexion


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(&#39;text/plain&#39;);
Copier après la connexion


clearData()

Cette méthode efface le dataTransfer les données de l'objet stockées dans. Le paramètre est facultatif et correspond au type de données. Si le paramètre est vide, tous les types de données seront effacés. Par exemple :


event.dataTransfer.clearData();
Copier après la connexion


setDragImage()

Cette méthode définit l'icône glisser-déposer en utilisant le élément img. Reçoit trois paramètres, le premier est l'élément icône, le second est le déplacement de l'élément icône sur l'axe X à partir du pointeur de la souris et le troisième est le déplacement sur l'axe Y de l'élément icône à partir du pointeur de la souris. Par exemple :


var source = document.getElementById(&#39;source&#39;),
    icon = document.createElement(&#39;img&#39;);icon.src = &#39;img.png&#39;;source.addEventListener(&#39;dragstart&#39;,function(ev){
    ev.dataTransfer.setDragImage(icon,-10,-10)},false)
Copier après la connexion


effectAlldue et dropEffect

les deux propriétés sont combinés pour définir l’effet visuel du glisser-déposer.

Il convient de noter : IE ne prend pas en charge les objets dataTransfer. Oui, il n'est pas pris en charge quelle que soit la version d'IE.

Implémentation du tri par glisser-déposer

Nous connaissons déjà l'utilisation de l'API par glisser-déposer. Implémentons un simple tri par glisser-déposer, qui est également courant dans. projets. Voyons d'abord l'idée :

  • Dans une liste, chaque élément peut être glissé et déposé. Ensuite, vous devez d'abord définir l'attribut draggable sur true pour chaque élément.

  • Écoutez l'événement dragstart de chaque élément et stylisez l'objet source pour le distinguer.

  • Écoutez l'événement dragenter de chaque élément. Lorsque l'objet source entre dans l'élément actuel, ajoutez l'objet source avant l'élément. De cette façon, les éléments suivants seront évincés par l'objet source, obtenant ainsi un effet de tri.

  • Mais vous constaterez que l'objet source ne peut pas être classé en dernier, mais ne peut être classé qu'en avant-dernier. À ce stade, vous devez écouter l'événement dragleave. Lorsque l'objet de processus est le dernier élément, l'objet source quitte l'objet de processus, puis l'objet source est ajouté à la fin.

Le code principal est le suivant :


var source = document.querySelectorAll(&#39;.list&#39;),
    dragElement = null;for(var i = 0; i < source.length; i++){
    source[i].addEventListener(&#39;dragstart&#39;,function(ev){
        dragElement = this;
    },false);

    source[i].addEventListener(&#39;dragenter&#39;, function(ev){
        if(dragElement != this){
            this.parentNode.insertBefore(dragElement,this);
        }
    }, false)

    source[i].addEventListener(&#39;dragleave&#39;, function(ev){
        if(dragElement != this){
            if(this == this.parentNode.lastElementChild || this == this.parentNode.lastChild){
                this.parentNode.appendChild(dragElement);
            }
        }
    }, false)};document.ondragover = function(e){e.preventDefault();}document.ondrop = function(e){e.preventDefault();}
Copier après la connexion


Adresse complète du code : glisser- démo

兼容

主要是在IE中的兼容不太好,不过至少在IE10中能兼容上面的拖动排序。

而且在我简单的试验中发现,就是在 IE 中元素不设置 height 的时候,不会触发 dragleave 事件。

更重要的一点是在 ios 和安卓上,完全不兼容。不过还好,有一个插件能让它在移动端完美兼容。
插件地址:ios-html5-drag-drop-shim

只需要在原有的代码中引入该插件,即可在移动端上实现拖动了。


<script>var iosDragDropShim = { enableEnterLeave: true }</script><script src="vendor/ios-drag-drop.js"></script>
Copier après la connexion


更多文章:lin-xin/blog

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide de développement de recherche PHP et Manticore : créez rapidement une API de recherche Guide de développement de recherche PHP et Manticore : créez rapidement une API de recherche Aug 07, 2023 pm 06:05 PM

Guide de développement PHP et ManticoreSearch : Créer rapidement une API de recherche La recherche est l'une des fonctionnalités indispensables des applications Web modernes. Qu'il s'agisse d'un site Web de commerce électronique, d'une plateforme de médias sociaux ou d'un portail d'actualités, il doit fournir une fonction de recherche efficace et précise pour aider les utilisateurs à trouver le contenu qui les intéresse. En tant que moteur de recherche en texte intégral doté d'excellentes performances, ManticoreSearch nous fournit un outil puissant pour créer d'excellentes API de recherche. Cet article vous montrera comment

Comment explorer et traiter les données en appelant l'interface API dans un projet PHP ? Comment explorer et traiter les données en appelant l'interface API dans un projet PHP ? Sep 05, 2023 am 08:41 AM

Comment explorer et traiter les données en appelant l'interface API dans un projet PHP ? 1. Introduction Dans les projets PHP, nous devons souvent explorer les données d'autres sites Web et traiter ces données. De nombreux sites Web fournissent des interfaces API et nous pouvons obtenir des données en appelant ces interfaces. Cet article explique comment utiliser PHP pour appeler l'interface API afin d'explorer et de traiter les données. 2. Obtenez l'URL et les paramètres de l'interface API Avant de commencer, nous devons obtenir l'URL de l'interface API cible et les paramètres requis.

Comment gérer les problèmes d'erreur de l'API Laravel Comment gérer les problèmes d'erreur de l'API Laravel Mar 06, 2024 pm 05:18 PM

Titre : Comment gérer les problèmes d'erreur de l'API Laravel, des exemples de code spécifiques sont nécessaires lors du développement de Laravel, des erreurs d'API sont souvent rencontrées. Ces erreurs peuvent provenir de diverses raisons telles que des erreurs logiques du code du programme, des problèmes de requête de base de données ou des échecs de requête d'API externe. La façon de gérer ces rapports d'erreurs est un problème clé. Cet article utilisera des exemples de code spécifiques pour démontrer comment gérer efficacement les rapports d'erreurs de l'API Laravel. 1. Gestion des erreurs dans Laravel

Enregistrez les données de l'API au format CSV à l'aide de Python Enregistrez les données de l'API au format CSV à l'aide de Python Aug 31, 2023 pm 09:09 PM

Dans le monde des applications et de l'analyse basées sur les données, les API (Application Programming Interfaces) jouent un rôle essentiel dans la récupération de données provenant de diverses sources. Lorsque vous travaillez avec des données API, vous devez souvent stocker les données dans un format facile d'accès et de manipulation. L'un de ces formats est le CSV (Comma Separated Values), qui permet d'organiser et de stocker efficacement les données tabulaires. Cet article explorera le processus de sauvegarde des données API au format CSV à l'aide du puissant langage de programmation Python. En suivant les étapes décrites dans ce guide, nous apprendrons comment récupérer des données de l'API, extraire des informations pertinentes et les stocker dans un fichier CSV pour une analyse et un traitement plus approfondis. Plongeons dans le monde du traitement de données API avec Python et libérons le potentiel du format CSV

Guide d'appel de l'API React : Comment interagir et transférer des données avec l'API backend Guide d'appel de l'API React : Comment interagir et transférer des données avec l'API backend Sep 26, 2023 am 10:19 AM

Guide d'appel ReactAPI : Comment interagir avec et transférer des données vers l'API backend Présentation : Dans le développement Web moderne, interagir avec et transférer des données vers l'API backend est une exigence courante. React, en tant que framework frontal populaire, fournit des outils et fonctionnalités puissants pour simplifier ce processus. Cet article explique comment utiliser React pour appeler l'API backend, y compris les requêtes de base GET et POST, et fournit des exemples de code spécifiques. Installez les dépendances requises : Tout d'abord, assurez-vous qu'Axi est installé dans le projet

Guide d'utilisation de l'API Oracle : exploration de la technologie d'interface de données Guide d'utilisation de l'API Oracle : exploration de la technologie d'interface de données Mar 07, 2024 am 11:12 AM

Oracle est un fournisseur de systèmes de gestion de bases de données de renommée mondiale et son API (Application Programming Interface) est un outil puissant qui aide les développeurs à interagir et à s'intégrer facilement aux bases de données Oracle. Dans cet article, nous approfondirons le guide d'utilisation de l'API Oracle, montrerons aux lecteurs comment utiliser la technologie d'interface de données pendant le processus de développement et fournirons des exemples de code spécifiques. 1.Oracle

Analyse de la stratégie d'intégration des API Oracle : parvenir à une communication transparente entre les systèmes Analyse de la stratégie d'intégration des API Oracle : parvenir à une communication transparente entre les systèmes Mar 07, 2024 pm 10:09 PM

Analyse de la stratégie d'intégration de l'API Oracle : pour parvenir à une communication transparente entre les systèmes, des exemples de code spécifiques sont nécessaires. À l'ère numérique d'aujourd'hui, les systèmes internes de l'entreprise doivent communiquer entre eux et partager des données, et l'API Oracle est l'un des outils importants pour contribuer à une communication transparente. communication entre les systèmes. Cet article commencera par les concepts et principes de base d'OracleAPI, explorera les stratégies d'intégration d'API et enfin donnera des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et appliquer OracleAPI. 1. API Oracle de base

Suggestions de développement : Comment utiliser le framework ThinkPHP pour le développement d'API Suggestions de développement : Comment utiliser le framework ThinkPHP pour le développement d'API Nov 22, 2023 pm 05:18 PM

Suggestions de développement : Comment utiliser le framework ThinkPHP pour le développement d'API Avec le développement continu d'Internet, l'importance de l'API (Application Programming Interface) est devenue de plus en plus importante. L'API est un pont de communication entre différentes applications. Elle peut réaliser le partage de données, l'appel de fonctions et d'autres opérations, et offre aux développeurs une méthode de développement relativement simple et rapide. En tant qu'excellent framework de développement PHP, le framework ThinkPHP est efficace, évolutif et facile à utiliser.

See all articles