Table of Contents
Default drag
Just a simple drag and drop is meaningless
There are two important properties in dataTransfer
The dropEffect attribute value is a string, indicating which placement behavior the dragged element can perform
effectAllowed
Home Web Front-end H5 Tutorial A detailed introduction to APIs related to HTML5 element drag and drop (pictures and text)

A detailed introduction to APIs related to HTML5 element drag and drop (pictures and text)

Mar 11, 2017 pm 03:58 PM

In fact, HTML5 just adds some useful APIs
Let us develop more easily
So that we can focus more on business logic
The use of these APIs is also very simple
But I My memory is not very good
So I still record it in the form of a blog (manual funny)
Let’s write about this drag and drop API today

Default drag

Speaking of drag In fact, the earliest implementation of drag-and-drop function was IE (IE4)
H5 is the drag-and-drop specification specified based on the IE instance
In the browser, there is a default drag
For example, pictures Drag

Drag the selected text

##Drag the link

Element drag

The browser allows us to drag images, text and links by default

It is also possible to drag other elements
Only on the element tag Add an attribute

1

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

Copy after login

When this element is dragged, the browser will display it as a translucent copy

Drag event

The drag event should be divided into There are two types

One type is the event triggered by the dragged element
The other type is the event triggered by the drag and drop target element

1

<p id="source" draggable="true"></p><p id="target"></p>  <!-- 样式略 -->

Copy after login

1

var source = document.getElementById(&#39;source&#39;);var target = document.getElementById(&#39;target&#39;);

Copy after login

Drag element

The drag element At this time, the dragged element will trigger the following event

  • dragstart

  • drag

  • dragend

When the mouse clicks on an element and starts to move, the dragstart event will be triggered (analogous to mousedown)

The drag event will be continuously triggered during the dragging process (analogous to mousemove)
The dragend event will be triggered when the mouse is released to cancel the drag (analogous to mouseup)

1

2

3

4

5

6

7

source.ondragstart = function(){

  console.log(&#39;开始拖拽&#39;);

}source.ondrag = function(){

  console.log(&#39;拖拽中&#39;);

}source.ondragend = function(){

  console.log(&#39;拖拽结束&#39;);

}

Copy after login

Target element

When the dragged element is dragged onto a target element, the target element will trigger the following event

  • dragenter

  • dragover

  • dragleave

  • drop

Drag the element to the target, and the dragenter event will be triggered (analogous to mouseover)

When the dragged element is in the target element, the dragover event will continue to be triggered.
Leave the target element and trigger the dragleave event (analogous to mouseout)
If the element is dragged and dropped into the target element (release the mouse in the target element), the drop event will be triggered but the dragleave event will not be triggered

1

2

3

4

5

6

7

8

9

target.ondragenter = function(){

  console.log(&#39;拖动进入目标元素&#39;);

}target.ondragover = function(){

  console.log(&#39;目标元素中拖拽&#39;);

}target.ondragleave = function(){

  console.log(&#39;拖动离开目标元素&#39;);

}target.ondrop = function(){

  console.log(&#39;拖放&#39;);

}

Copy after login


At this time we will find that the drop event is not triggered when the element is dragged and dropped into the target element


We saw a special cursor (circle + backslash)

It means invalid drag and drop

So the drop event is not triggered
That is to say, the element cannot be dragged and dropped by default
As long as we cancel the default event
in the dragover event of the
target element, the problem can be solved

1

2

3

<strong>target.ondragover = function(e){

  console.log(&#39;目标元素中拖拽&#39;);

  e.preventDefault(); //增}</strong>

Copy after login
Data exchange

Just a simple drag and drop is meaningless

We need Perform data exchange

The object of this term data exchange is the attribute of the event object
dataTransfer
The two core methods of dataTransfer are setData() and getData() setData() is used Set data, use getData() to receive data

1

2

event.dataTransfer.setData(&#39;text&#39;,&#39;some text&#39;);

var text = event.dataTransfer.getData(&#39;text&#39;);//保存在dataTransfer中的数据只能在drop事件处理函数中处理

Copy after login

If we drag the selected text

The browser will call dataTransfer.setData by default to set the corresponding text data


setData() and getData() is a string of data type

In addition to the "text" text type, the data types defined by IE also include "URL"

H5 has extended it and can specify various MIME types
But for Backwards compatible, it also supports "text" and "URL"
They will be mapped to "text/plain" and "text/uri-list" respectively

If the data is saved as URL, the browser It will do special processing and treat it as a web link

(so dragging the link to another browser window will open the web page)


If necessary, we can manually save the data that needs to be transferred

1

2

3

4

5

6

7

8

9

10

var source = document.getElementById(&#39;source&#39;);var target = document.getElementById(&#39;target&#39;);

source.ondragstart = function(e){

  e.dataTransfer.setData('text','传递文本数据');

}

target.ondragover = function(e){

  e.preventDefault();

}

target.ondrop = function(e){

  console.log(e.dataTransfer.getData('text'));

}

Copy after login

Drag settings

There are two important properties in dataTransfer

dropEffect
andeffectAlloweddropEffect

The dropEffect attribute value is a string, indicating which placement behavior the dragged element can perform

To use this attribute, it must be set in the dragenter event handler function


    none Elements cannot be dragged and dropped here (default value for all elements except text boxes)
  • move Move to the target
  • copy Copy to target
  • link The target opens the drag element (the drag element must be a link and have a URL)

effectAllowed

The effectAllowed attribute value is also a character String, indicating which dropEffect is allowed to drag elements
To use this attribute, it must be set in the dragst event handler function

  • uninitialized No drag-and-drop behavior is set

  • none cannot be caused by any behavior

  • copy Only dropEffect values ​​are allowed to be copy

  • link Only dropEffect values ​​are allowed to be link

  • move Only allows dropEffect value to be move

  • copyLink Allows dropEffect value to be copy and link

  • copyMove allows dropEffect values ​​to be copy and move

  • linkMove allows dropEffect values ​​to be link and move

  • all allows any dropEffect

The above is the detailed content of A detailed introduction to APIs related to HTML5 element drag and drop (pictures and text). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles