HTML5拖放功能

基本概念

在HTML5中,任何元素都可以拖放,Drap和Drop。拖放属于HTML事件中的Mouse事件。

实例讲解

代码地址:

JS Bin

...
<body>
  <div id="end-area" class="area"></div>
  <img id="start-area" draggable="true"  src="http://pic1.zhimg.com/d80d9ff11c28c19123bc75a27d3c1df8_l.jpg">
<script id="jsbin-javascript">
var img = document.getElementById("start-area");
img.ondragstart = function(event) {
    event.dataTransfer.setData("Text", event.target.id);
};
var div = document.getElementById("end-area");
div.ondragover = function(event) {
    event.preventDefault();
};
div.ondrop = function(event) {
    event.preventDefault();
    var data = event.dataTransfer.getData("Text");
    event.target.appendChild(document.getElementById(data));
};
</script>
</body>
...

 

大体模样:

Michael

实现过程
1.设置元素可拖放。(HTML部分)
<img draggable="true">

 

注意:链接和图像都是默认可拖动。因此上述代码可以不用添加draggable属性,但为了可读性还是加上吧。

2.拖放过程需要怎么处理?(JS部分)

需要在被拖元素上绑定事件:ondragstart事件

基于HTML和JavaScript分离的原则,代码为:

img.ondragstart = function(event) {
    event.dataTransfer.setData("Text", event.target.id);
};

 

这代码里面最关键的是dataTransfer对象。它是事件对象(event)的一个属性,所以只能在拖放事件处理程序中访问dataTransfer对象,用来完善拖放功能。

dataTransfer对象有两个方法:getData()和setData()。两个方法之间的关系是:setData()方法的第一个参数,也是getData()方法唯一的一个参数,是一个字符串,表示保存的数据类型,取值为"text"或"URL。

3.拖放到哪个位置?(JS部分)

目标元素绑定事件:ondragover事件

div.ondragover = function(event) {
    event.preventDefault();
};

 

默认地,无法将数据/元素放置到其他元素中。所以通过event.preventDefault()来阻止对元素的默认处理方式。

4.放置。(JS部分)

目标元素绑定事件:ondrop事件

div.ondrop = function(event) {
    event.preventDefault();
    var data = event.dataTransfer.getData("Text");
    event.target.appendChild(document.getElementById(data));
};

 

放置实际上是移动的过程,用appendChild()方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值