Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erläuterung der Techniken zur einfachen Implementierung der Drag-Funktion in JavaScript HTML5

黄舟
Freigeben: 2017-03-24 15:08:54
Original
1091 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich Javascript HTML5 zur einfachen Implementierung der Drag-Funktion vorgestellt, die einen bestimmten Referenzwert hat

Ziehen und Drop (Drag and Drop) sind Standardkomponenten von HTML5, nämlich wie man ein Drag-Objekt wird, wie man ein Drag-Ziel wird und die -Ereignisse für das gezogene Objekt . die Ereignisse, die dem Drag-Ziel gehören, und wie Informationen zwischen Drag-and-Drop-Objekten übertragen werden.

Ereignisse, die dem gezogenen Objekt gehören

  • Dragstart (wird ausgelöst, wenn das Objekt gerade gezogen wird)

  • Drag (wird ausgelöst, nachdem das Dragstart-Ereignis ausgelöst wurde)

  • dragend (wird ausgelöst, wenn das Drag-Ereignis endet)

Ereignisse im Besitz des Drag-Ziels

  • Drager (wird ausgelöst, wenn das gezogene Element in das Drop-Ziel eintritt)

  • Dragover (wird ausgelöst, wenn das gezogene Element im Drop-Ziel verschoben wird, ähnlich wie bei Mouseover)

  • drop (wird ausgelöst, wenn das gezogene Element im Drop-Ziel platziert wird)

So wird man zu einem ziehbaren Objekt

In HTML kann das img-Element standardmäßig gezogen werden, und andere Elemente müssen auf ziehbar eingestellt werden =true. Sie können es ziehen.

<p draggable="true"></p>
Nach dem Login kopieren

So werden Sie ein Drag-Ziel

In HTML können Elemente standardmäßig nicht zu Drop-Zielen werden, wir deaktivieren lediglich das Standardverhalten von drapenter und Drapover-Ereignisse können als Drag-and-Drop-Ziele bezeichnet werden.

droptarget.addEventListener(&#39;dragenter&#39;, function(event) {
  event.preventDefault();
});
droptarget.addEventListener(&#39;dragover&#39;, function(event) {
  event.preventDefault();
});
Nach dem Login kopieren

So übertragen Sie Informationen zwischen Drag-and-Drop-Objekten

Im Ereignis gibt es ein dataTransferObjekt, das über zwei gängige Methoden verfügt setData() und getData() werden zum Speichern von Drag-and-Drop-Informationen bzw. zum Abrufen von Drag-and-Drop-Informationen verwendet. Unter diesen kann setData () nur zu Beginn des Drag-Ereignisses festgelegt werden, dh wenn das Dragstart-Ereignis festgelegt wird, und getData () wird im Allgemeinen abgerufen, wenn das Drop-Ereignis ausgelöst wird.

// drapobj 拖拽元素
// droptarget 放置目标
dragobj.addEventListener(&#39;dragstart&#39;, function(event) {
  event.dataTransfer.setData(&#39;id&#39;, dragobj.id);
});
droptarget.addEventListener(&#39;drop&#39;, function(event) {
  var id = event.dataTransfer.getData(&#39;id&#39;);
  var obj = document.getElementById(id);
  event.preventDefault();
  this.appendChild(obj);
});
Nach dem Login kopieren

Vollständiger Code





  
  HTML5 拖拽



  <p draggable="true"></p>
  

<script> var droptarget = document.getElementById(&#39;droptarget&#39;); var dragobj = document.getElementById(&#39;dragobj&#39;); // drapobj 拖拽元素 // droptarget 放置目标 dragobj.addEventListener(&#39;dragstart&#39;, function(event) { event.dataTransfer.setData(&#39;id&#39;, dragobj.id); }); droptarget.addEventListener(&amp;#39;dragenter&amp;#39;, function(event) { event.preventDefault(); }); droptarget.addEventListener(&amp;#39;dragover&amp;#39;, function(event) { event.preventDefault(); }); droptarget.addEventListener(&#39;drop&#39;, function(event) { var id = event.dataTransfer.getData(&#39;id&#39;); var obj = document.getElementById(id); event.preventDefault(); this.appendChild(obj); }); </script>
Nach dem Login kopieren

Es liegt ein Problem vor

Firefox-Browser Das Ziehen eines Bildes öffnet standardmäßig ein neues Fenster. Gemäß der erweiterten JavaScript-Programmierung ist das Standardereignis im Drop-Ereignis deaktiviert, was das Problem nicht löst.

Lösung: Wenn Sie das Bild als Hintergrundbild von p und p als Drag-Objekt verwenden, tritt dieses Problem nicht auf.

Endgültiger Code





  
  HTML5 拖拽
  



  

<script> var droptarget = document.getElementById(&#39;droptarget&#39;); var dragobj = document.getElementById(&#39;dragobj&#39;); // drapobj 拖拽元素 // droptarget 放置目标 dragobj.addEventListener(&#39;dragstart&#39;, function(event) { event.dataTransfer.setData(&#39;id&#39;, dragobj.id); }); droptarget.addEventListener(&amp;#39;dragenter&amp;#39;, function(event) { event.preventDefault(); }); droptarget.addEventListener(&amp;#39;dragover&amp;#39;, function(event) { event.preventDefault(); }); droptarget.addEventListener(&#39;drop&#39;, function(event) { var id = event.dataTransfer.getData(&#39;id&#39;); var obj = document.getElementById(id); event.preventDefault(); this.appendChild(obj); }); </script>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Techniken zur einfachen Implementierung der Drag-Funktion in JavaScript HTML5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!