在线演示地址 http://jsrun.net/JpiKp/edit ,但是在firefox中只是这样还是无法拖动的。还需要加上拖动事件
事件分为两类,当前拖动的元素上的事件,以及要放置的位置接收到的事件。
一.发生在拖动元素上的事件:
二.发生在目标元素上的事件
可以通过addEventListener来添加事件监听或者直接使用dom0,在firefox中就必须添加dragstart事件并使用event.dataTransfer.setData来添加传递信息
在拖动元素时可以设置传递的信息
event.dataTransfer.setData("te", “sss)两个参数,第一个参数key,第二个参数value。注意只能传递字符串和url,但是在firefox使用text或Text作为key时会打开新的标签页,所以不要用他们作为key。
使用event.preventDefault()可以阻止浏览器默认事件
接下来写一个简单的例子,在线演示地址 http://jsrun.net/JpiKp/edit
html
js
其他事件大家可以自己试一试
html5 拖动效果在手机上实现方法是调用drag和drop一系列函数实现的。
注意:拖拽源在拖拽操作结束将得到dragend事件对象,不管操作成功与否。
举例:
定义可拖放内容
<div id="columns">
<div class="column" draggable="true"><header>A</header></div>
<div class="column" draggable="true"><header>B</header></div>
<div class="column" draggable="true"><header>C</header></div>
</div>
2、监听拖动事件
可附加大量不同事件以监听整个拖放过程:
dragstart
drag
dragenter
dragleave
dragover
drop
dragend
a.这里是开始拖拽
function handleDragStart(e) {
this.style.opacity = '0.4' // this / e.target is the source node.
}
var cols = document.querySelectorAll('#columns .column')
[].forEach.call(cols, function(col) {
col.addEventListener('dragstart', handleDragStart, false)
})
b.dragenter、dragover 和 dragleave 事件处理程序可用于在拖动过程中提供额外的可视化提示。例如,在拖动期间将鼠标悬停在某一列上方时,其边框可能会变成虚线。这样,用户就能知道这些列也是放置的目标区域。