Drop and Drag API学习与整理

本文介绍了Drag and Drop API的学习与整理,包括拖拽的旧方法和新方法,强调了新API简化了代码并提供了更好的用户体验。重点讨论了DataTransfer对象,其在拖动操作中数据接收与传递的作用,以及如何设定拖动元素和释放区域的事件处理程序。文章还探讨了文件的drag-in-drag-out功能,展示了如何通过API实现文件在浏览器和桌面间的交互。
摘要由CSDN通过智能技术生成

原文链接:Drop and Drag API学习与整理
Drop和Drag是能够DOM元素拖动与释放的API。过去我们也有一个能够实现拖动与释放的流程。今天总结一下,可以看到新的API是给我们提供了很大的便利和简化了许多代码的。


拖拽的旧方法

总的是下面下面的三个流程:(js以前是没有直接拖拽的方法的,所谓的拖拽也就是把鼠标拖拽的偏移值赋值给拖动的元素,这样就好像形成一个假象,我是可以拖拽的,实际上该元素就是我们硬性规定他的新新位置的)

通过mousedown事件捕获DOM元素
通过mousemove事件来移动DOM元素
通过mouseup事件来释放DOM元素

我们在拖拽元素时,要计算该元素距离浏览器的top值和left值,当我们获得这个值后,我们再直接给他定位。获得这个top和left需要我们计算,我们很容易算出上图中红色线的距离,利用e.clientX和e.clientY,就可以获得点击该元素时,该点的位置,然后我们再算出该元素距离顶部和底部的距离,相减就可以得到鼠标距离该拖动对象的距离。

旧拖拽方法的原理

具体代码如下:
先定义一个可拖动对象,并给其父框加入对应的样式(做完以后可以试试如果main的absolute去掉会怎么样):

//CSS
.main{
    position:absolute;
    overflow:hidden;
    width:500px;
    height:500px;
    border:1px solid red;
}
//DOM
<div class="main">
    <img src="./face.png" alt="drag" id="item">
</div>

下面是js代码,对应解释以下几点
  1. 两个对象dragObj是拖动对象,mouseOffset是鼠标距离对象的偏移量。
  2. 要给document加入onmousemove事件,而不是给对应的obj,否则会页面抖动。
  3. mouseup是用来释放对象,用来结束拖动,设置拖动对象为空。
  4. 设置mousePoint对象是为了使用的时候更加方便。直接以对象属性的形式访问。
  5. getMousePos是用来获得鼠标偏移量的。
  6. mousemove用来计算位置并定位。
var dragObj = null;
var mouseOffset = null;
document.onmousemove = mousemove;
document.onmouseup = mouseup;

function mouseup (e){
   
    dragObj = null;
}   

function mousePoint (x,y){
   
    this.x = x;
    this.y = y;
}

function getMousePos (e) {
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值