HTML5提供的拖拽功能

HTML5中要实现拖拽效果需要两个元素,即需要拖拽的文件和要拖拽到哪里去,我们把需要拖拽的文件称之为源元素,要拖拽到的地方称为目标元素。

源元素事件有3个:1. dragstart    当鼠标开始拖放时被触发;

                                  2. drag   当鼠标拖放过程中被触发,类似于mousemove事件

                                  3. dragend   当鼠标结束拖放时被触发

目标元素事件有4个:1.dragenter   当鼠标拖放进入到目标元素内时被触发

                                      2.  drop   当鼠标实现拖放效果时被触发, 注意,该事件在默认情况下,没有被触发,因为HTML页面默认情况下,不允许拖放,所以需要使用事件对象event.preventDefault()方法来阻止页面的默认行为

                                      3. dragover   当鼠标到达目标元素时被触发

                                      4.dragleave  当鼠标拖放离开目标元素时被触发

在拖拽中需要使用到dataTransfer对象,该对象可以将源元素的信息(数据),存储在这里,并将存储在该对象的源元素信息,,提供给目标元素,类似于剪切板功能。主要方法有三种:

 1.   setData()   设置(源元素)数据  ,  在源元素事件中使用,该方法以指定格式给dataTransfer对象赋予数据,data为设置的数据内容

 2.   getData()   获取设置的数据    ,   在目标元素事件中使用

 3.   clearData()    清除(设置的)数据  ,   所有的数据内容,存储在浏览器内存中,当使用完毕数据内容时,清除

下面是一个简单的拖拽功能代码段:

第一步 页面上定义两个div,实现将d1内的图片元素拖拽到d2内

<!-- 源元素 --><div id="d1"><img id="myimg" src="Tulips.jpg" width="256" /> </div>

<!-- 目标元素 --><div id="d2"></div>

第二步 给两个div设置简单样式 

        #d1 {
width : 300px;
height : 300px;
border : solid 1px black;
float : left;
}
#d2 {
width : 300px;
height : 300px;
border : solid 1px black;
float : right;
}

第三   js代码

var myimg = document.getElementById("myimg");  // 1. 获取源元素
var ele = document.getElementById("d2");   // 2. 获取目标元素
myimg.addEventListener("dragstart",MyDragStart);   // 3. 为源元素绑定dragstart事件
ele.addEventListener("dragover",MyDragOver);  // 4. 为目标元素绑定dragover和drop事件
ele.addEventListener("drop",MyDrop);

   //  实现事件的处理函数, 将源元素的数据,存储在dataTransfer对象中
function MyDragStart(event){
var mydata = myimg.src;// 1. 获取源元素数据
var trans = event.dataTransfer;// 2. 获取dataTransfer对象
trans.setData("text",mydata);   //3. 调用setData(type,data)方法
}

        function MyDragOver(event){  
event.preventDefault();   // 4.阻止页面的默认行为
}

   // 从dataTransfer对象中,获取之前设置的数据

       function MyDrop(event){
var trans = event.dataTransfer;// 1. 获取dataTransfer对象
var mysrc = trans.getData("text");//  2. 使用getData(type)方法获取设置的数据,注意,之前调用setData()时,传递的是什么值,这里的 type就传递什么值
ele.innerHTML = "<img src='"+mysrc+"' width='256'/>";   // 3. 将源元素(图片),添加到目标元素中
trans.clearData("text");     // 4. 清除dataTransfer对象中的数据
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值