HTML5拖放

HTML5提供专门的拖拽与拖放的API,他和以前传统的拖放的实现区别是
HTML5的拖放API是支持跨浏览器的,就是你可以将一个浏览器中的对象拖放到另外一个浏览器的元素中
DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer。
draggable 属性:就是标签元素要设置draggable=true,否则不会有效果
ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上
ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上
ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上
ondrop 事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上
ondragend 事件:当拖拽完成后触发的事件,此事件作用在被拖曳元素上
Event.preventDefault() 方法:阻止默认的些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。另外,如果是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。此时需要用用document的ondragover事件把它直接干掉。
Event.effectAllowed 属性:就是拖拽的效果。

<div id="myDrag" draggable="true">123</div>
<div id="trage"></div>
#myDrag {
border:1px solid red;
width:200px;
height:20px;
cursor:move;
}

#trage {
border:1px solid red;
width:300px;
height:200px;
}

.movein {
background:#eee;
}
document.getElementById("myDrag").addEventListener("dragstart", function (evt)
{
    console.log("dragstart");
    evt.effectAllowed = "copy";
    evt.dataTransfer.setData("text/plain", evt.target.textContent);
}, false);
document.getElementById("myDrag").addEventListener("dragend", function (evt)
{
    console.log("dragend");
    document.getElementById("trage").className = null;
}, false);
document.getElementById("trage").addEventListener("dragenter", function (evt)
{
    console.log("dragenter");
    document.getElementById("trage").className = "movein";
}, false);
document.getElementById("trage").addEventListener("dragleave", function (evt)
{
    console.log("dragleave");
    document.getElementById("trage").className = null;
}, false);
document.getElementById("trage").addEventListener("drop", function (evt)
{
    console.log("drop");
    var text = evt.dataTransfer.getData("text/plain");
    document.getElementById("trage").innerHTML = text;
}, false);
document.getElementById("trage").addEventListener("dragover", function (evt)
{
    console.log("dragover");
    evt.dataTransfer.dropEffect = "copy";
    evt.stopPropagation();
    evt.preventDefault();
}, false);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 拖放(Drag 和 drop)是HTML5标准的组成部分 拖放 拖放是一种常见的特性,即抓取对象以后拖放到其他位置...
    赵晨敏阅读 652评论 0 0
  • HTML5拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 拖放 拖...
    GreenHand1阅读 356评论 0 0
  • HTML5 拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分。 将w3...
    鹿守心畔光阅读 1,016评论 0 2
  • 拖放事件 拖放操作是将一个元素拖放到另一个元素的操作,这项操作涉及到两个元素:被拖放元素和放置元素。在拖放过程中,...
    柏丘君阅读 660评论 0 0
  • 拖放 拖放是一种常见的特效---将某个对象拖到某个位置。在H5中,任何元素都都能拖放。 实例: 亲自试一试 实例解...
    LsFern阅读 152评论 0 1