html5拖动元素

<!DOCTYPE HTML>
<html>
/*将一个元素拖动到另一个元素上*/
<head>
<meta charset="utf-8" />
<style type="text/css">
#div1 {
width: 198px;
height: 66px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
function allowDrop(ev) {
/*默认地,数据/元素无法被放置到其他元素中。为了实现拖放,我们必须阻止元素的这种默认的处理方式。
                                   这个任务由 ondragover 事件的 event.preventDefault() 方法完成:
               */
ev.preventDefault();
}
/**/
function drag(ev) {
/*设置被拖动数据的数据类型和值*/
/*数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。*/
ev.dataTransfer.setData("Text", ev.target.id);
}
/*当放开被拖数据时,会发生 drop 事件。*/
function drop(ev) {
/*调用 preventDefault() 来阻止数据的浏览器默认处理方式(drop 事件的默认行为是以链接形式打开)*/
ev.preventDefault();
/*通过 dataTransfer.getData() 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据*/
var data = ev.dataTransfer.getData("Text");
/*被拖数据是被拖元素的 id ("drag1")*/
/*把被拖元素追加到放置元素中*/
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>请把下文 的图片拖放到矩形中:</p>
<!--ondragover:规定被拖动的数据能够放置到何处-->
<div id="div1" οndrοp="drop(event)" οndragοver="allowDrop(event)"></div>
<br />
<!--1.设置元素可以拖动 draggable= true-->
<!--ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据。-->
<img id="drag1" src="img/hands.png" draggable="true" οndragstart="drag(event)" />
</body>

</html>

步骤如下:

1.把元素设置为可拖放: draggable="true"如上,img id为drag1的

2.拖放的内容 - ondragstart setData()

    ondragstart 属性调用了一个 drag(event) 函数,规定拖动什么数据
<img id="drag1" src="img/hands.png" draggable="true" οndragstart="drag(event)" />
在drag(event)函数里面:
                                 /*设置被拖动数据的数据类型和值*/
                                /*数据类型是 "text",而值是这个可拖动元素的 id ("drag1")。*/
                               ev.dataTransfer.setData("Text", ev.target.id);

这里调用了dataTransfer.setData();传入数据类型为text和值,ev.target目标的id;

3.拖到何处 - ondragover

ondragover 事件规定被拖动的数据能够被放置到何处。

默认的数据或者元素是无法被放置到其他元素中,为了实现拖放,我们必须阻止元素的这种默认的处理方式;

这个任务由ondragover事件的event.preventDefault()方法完成;

上文 代码中的

                 function allowDrop(ev) {
ev.preventDefault();

}

4.进行放置 - ondrop

当放开被拖数据时,会发生drop事件;

上面代码中调用了drop(event)函数,同样的,需要我们组织默认行为;

ev.preventDefault();// 默认drop事件的行为是以链接形式打开的 

接着,我们通过dataTransfer.getData()获取被拖动的数据,也就是被拖元素通过setData()设置的数据。

var data = ev.dataTransfer.getData("text");

// 最后我们将被拖元素追加到放置元素中

ev.target.appendChild(document.getElementById(data));


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值