您當前的位置:首頁 > 舞蹈

HTML5使用JavaScript實現拖放效果

作者:由 豆子 發表于 舞蹈時間:2021-06-14

HTML5 提供了拖放 drag 和 drop 的 API,可以實現在不同的應用程式之間的拖放

實現拖放主要有以下步驟:

將物件的屬性設定為可拖放,即“draggable=‘true’”。

編寫有關拖放事件的處理方法

拖放

相關的事件

事件

產生事件的元素

說明

dragstart

被拖放的元素

開始拖放操作資料庫

drag

被拖放的元素

拖放過程中

dragenter

拖放過程中滑鼠經過的元素

被拖放的元素開始進入本元素的範圍內

dragover

事拖放過程中滑鼠經過的元素

被拖放的元素正在本元素範圍內移動

dragleave

拖放過程中滑鼠經過的元素

被拖放的元素離開本元素的範圍

drop

拖放的目標元素

有其他元素被拖放到了本元素中

dragend

拖放的目標元素

拖放操作結束

dataTransfer物件

①dataTransfer 物件是事件物件的一個屬性,用於從拖拽元素向放置目標傳遞字串格式的資料

②只能在拖放事件的事件處理程式中訪問 dataTransfer 物件

③在事件處理程式中,可以使用物件的屬性和方法來完善拖放功能

dataTransfer 物件的常用方法:

方法

說明

clearData(format)

清除 dataTransfer 物件中存放的資料,如果省略引數,則清除全部資料

setData(format,data)

向 dataTransfer 物件中存入資料

getData(format)

從 dataTransfer 物件中讀取資料

setDragImage(image,x,y)

用 img 元素來設定拖放圖示

dataTransfer 物件的常用屬性:

屬性名

說明

dropEffect

表示拖放操作的視覺效果。該效果必須用在 effectAllowed 屬性指定且允許的視覺效果範圍內,允許指定的值為 none、copy、link 和 move

effectAllowed

用來指定當元素被拖放時所允許的視覺效果,可以指定的值為 none、copy、copyLink、copyMove、link、linkMove、move、all 和 uninitialize

type

存入資料的種類,字串的偽陣列

拖放示例:

<!DOCTYPE html>

<

html

lang

=

“en”

>

<

head

>

<

meta

charset

=

“UTF-8”

>

<

meta

name

=

“viewport”

content

=

“width=device-width, initial-scale=1。0”

>

<

title

>

拖拽功能的實現

title

>

<

style

>

box

{

width

200

px

height

500

px

border

2

px

dashed

green

float

left

margin-right

20

px

}

div

{

width

100

px

height

100

px

border

1

px

solid

#000

}

#

box1

#

box2

{

background

red

}

#

box3

#

box4

{

background

yellow

;}

#

box5

{

background

green

;}

style

>

head

>

<

body

>

<

div

id

=

“list”

class

=

“box”

ondrop

=

“drop(event)”

ondragover

=

“over(event)”

>

<

h1

>

盒子列表

h1

>

<

div

id

=

“box1”

class

=

“div”

draggable

=

“true”

ondragstart

=

“start(event)”

>

div

>

<

div

id

=

“box2”

class

=

“div”

draggable

=

“true”

ondragstart

=

“start(event)”

>

div

>

<

div

id

=

“box3”

class

=

“div”

draggable

=

“true”

ondragstart

=

“start(event)”

>

div

>

<

div

id

=

“box4”

class

=

“div”

draggable

=

“true”

ondragstart

=

“start(event)”

>

div

>

<

div

id

=

“box5”

class

=

“div”

draggable

=

“true”

ondragstart

=

“start(event)”

>

div

>

div

>

<

div

id

=

“list1”

class

=

“box”

ondrop

=

“drop(event)”

ondragover

=

“over(event)”

>

<

h1

>

紅色盒子

h1

>

div

>

<

div

id

=

“list2”

class

=

“box”

ondrop

=

“drop(event)”

ondragover

=

“over(event)”

>

<

h1

>

黃色盒子

h1

>

div

>

<

div

id

=

“list3”

class

=

“box”

ondrop

=

“drop(event)”

ondragover

=

“over(event)”

>

<

h1

>

綠色盒子

h1

>

div

>

<

script

>

//拖拽結束事件

function

over

e

){

//阻止盒子原來的預設屬性

e

preventDefault

();

}

//拖拽過程中事件

function

drop

e

){

var

dt

=

e

dataTransfer

//拿到之前setData(“id”)

var

id

=

dt

getData

“id”

);

//給它建立一個標籤進行生成

e

target

appendChild

document

getElementById

id

));

}

//拖拽開始事件

function

start

e

{

var

dt

=

e

dataTransfer

console

log

e

target

id

);

dt

setData

“id”

e

target

id

);

}

script

>

body

>

html

>

實現效果:

HTML5使用JavaScript實現拖放效果

標簽: 拖放  div  event  元素  dataTransfer