html新特性——拖拽(drag和drop)

html新特性——拖拽(drag和drop),第1张

拖动元素增加draggable="true"属性;

接受拖过来的元素要接受新元素,ondragover 事件触发的时候要禁止自设的默认事件e.preventDefault()

监听ondrop事件,将元素进行插入appendChild;

试试去吧

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>拖放</title>

<link href="css/style.css" type="text/css" rel="stylesheet"/>

<script src="js/jquery-1.11.1.min.js" type="text/javascript"></script>

</head>

<body>

<div id="box1" class="box"></div>

<div id="box2" class="box"></div>

<img id="img1" src="1.jpg">

<div id="msg"></div>

<script>

var box1Div,box2Div,msgDiv,img1

window.onload = function () {

box1Div = document.getElementById("box1")

box2Div = document.getElementById("box2")

msgDiv = document.getElementById("msg")

img1 = document.getElementById("img1")

// box1Div.ondragenter = function (e) {

// showObj(e)

// }

box1Div.ondragover = function (e) {

e.preventDefault()//阻止系统默认事件

}

box2Div.ondragover = function (e) {

e.preventDefault()//阻止系统默认事件

}

img1.ondragstart = function (e) {

e.dataTransfer.setData("imgId","img1")

}

box1Div.ondrop = dropImghandler

box2Div.ondrop = dropImghandler

}

function dropImghandler(e) {

showObj(e.dataTransfer)

e.preventDefault()

var img = document.getElementById(e.dataTransfer.getData("imgId"))

//box1Div.appendChild(img)

e.target.appendChild(img)

}

function showObj(obj) {

var s = ""

for(var k in obj){

s+=k+":"+obj[k]+"<br/>"

}

msgDiv.innerHTML = s

}

</script>

</body>

</html>

拖拽发生过程

被拖拽元素

dragstart按下鼠标键并开始移动鼠标时

drag在dragstart事件之后,在元素被拖动期间会持续触发该事件

dragend当拖动停止时,会触发dragend事件

放置目标元素

dragenter有元素被拖动到放置目标上

dragover紧随dragenter发生,在被拖动的元素

还在放置目标范围内移动时,会持续触发该事件

dragleave在元素被拖出放置目标时触发

drop元素被放到了放置目标中触发

注释:拖拽发生过程:dragstart->drag->dragenter->dragover->dragleave/drop->dragend


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7099571.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-01
下一篇2023-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存