Glisser-déposer HTML5

Le glisser-déposer est une fonctionnalité courante où un objet est saisi puis glissé vers un autre emplacement.

En HTML5, le glisser-déposer fait partie du standard et n'importe quel élément peut être glissé-déposé.

Le glisser-déposer fait partie du standard HTML5.


Prise en charge du navigateur

8.jpg


Internet Explorer 9+, Firefox, Opera, Chrome et Safari prennent en charge le glisser-déposer.

Remarque : Safari 5.1.2 ne prend pas en charge le glisser-déposer.


Exemple de glisser-déposer HTML5

ci-dessous L'exemple est une simple instance de glisser-déposer :

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>php中文网(php.cn)</title>
    <style type="text/css">
        #div1 {width:300px;height:200px;padding:10px;border:1px solid #aaaaaa;}
    </style>
    <script>
        function allowDrop(ev)
        {
            ev.preventDefault();
        }
        function drag(ev)
        {
            ev.dataTransfer.setData("Text",ev.target.id);
        }
        function drop(ev)
        {
            ev.preventDefault();
            var data=ev.dataTransfer.getData("Text");
            ev.target.appendChild(document.getElementById(data));
        }
    </script>
</head>
<body>
<p>拖动 W3CSchool.cc 图片到矩形框中:</p>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="http://img1.ph.126.net/MnyJ0KB2x0x5uxhOnXJtNA==/3337730273835664288.gif" draggable="true" ondragstart="drag(event)" width="300" height="200">
</body>
</html>

Exécutez le programme et essayez de faire glisser l'image


Le programme peut paraître un peu compliqué, mais nous pouvons étudier différentes parties de l'événement glisser-déposer séparément.

Définissez l'élément comme déplaçable

Tout d'abord, afin de rendre l'élément déplaçable, définissez l'attribut draggable sur true :

<img draggable="true">

Que faire glisser - ondragstart et setData()

Ensuite, précisez ce qui se passe lorsque l'élément est déplacé.

Dans l'exemple ci-dessus, l'attribut ondragstart appelle une fonction, drag(event), qui spécifie les données à glisser.

La méthode dataTransfer.setData() définit le type de données et la valeur des données déplacées :

function drag(ev)
{
ev.dataTransfer . setData("Text",ev.target.id);
}

Dans cet exemple, le type de données est "Text" et la valeur est l'identifiant du déplaçable. élément ( "glisser1").


Où mettre - ondragover

événement ondragover Précise où placer les données déplacées.

Par défaut, les données/éléments ne peuvent pas être placés à l'intérieur d'autres éléments. Si nous devons autoriser le placement, nous devons empêcher la gestion par défaut de l'élément.

Cela se fait en appelant la méthode event.preventDefault() de l'événement ondragover :

event.preventDefault()


pour le placement - ondrop

Lorsque les données glissées sont placées, le un événement de chute se produira.

Dans l'exemple ci-dessus, l'attribut ondrop appelle une fonction, drop(event) :

function drop(ev)
{
ev. ();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}

Explication du code :

  • Appelez PreventDefault() pour éviter le traitement des données par défaut du navigateur (le comportement par défaut de l'événement drop est de l'ouvrir en tant que fichier lien)

  • Récupérez les données déplacées via la méthode dataTransfer.getData("Text"). Cette méthode renverra n'importe quel ensemble de données du même type dans la méthode setData().

  • Les données déplacées sont l'identifiant de l'élément déplacé ("drag1")

  • Ajouter l'élément déplacé à l'élément de placement (élément cible ) Comment faire glisser entre deux éléments <div> Mettez l'image.

  • <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>php中文网(php.cn)</title>
        <style type="text/css">
            #div1, #div2
            {float:left; width:200px; height:205px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
        </style>
        <script>
            function allowDrop(ev)
            {
                ev.preventDefault();
            }
            function drag(ev)
            {
                ev.dataTransfer.setData("Text",ev.target.id);
            }
            function drop(ev)
            {
                ev.preventDefault();
                var data=ev.dataTransfer.getData("Text");
                ev.target.appendChild(document.getElementById(data));
            }
        </script>
    </head>
    <body>
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
        <img src="http://img1.ph.126.net/MnyJ0KB2x0x5uxhOnXJtNA==/3337730273835664288.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="190" height="190"></div>
    <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    </body>
    </html>

Exécutez le programme et essayez-le

Formation continue
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <style type="text/css"> #div1, #div2 {float:left; width:200px; height:205px; margin:10px;padding:10px;border:1px solid #aaaaaa;} </style> <script> function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } </script> </head> <body> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"> <img src="http://img1.ph.126.net/MnyJ0KB2x0x5uxhOnXJtNA==/3337730273835664288.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="190" height="190"></div> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div> </body> </html>
soumettreRéinitialiser le code
  • Recommandations de cours
  • Téléchargement du didacticiel