HTML5拖拽drag和drop

2018-07-07  本文已影响0人  过闹市

最近为公司编写基于react的树组件,用到了HTML5的新特性,drag和drop。一时兴起,总觉得应该将自己的使用心得记录下来。

html

<div id="droptarget"></div>

/* 如果不设置draggable属性,元素将无法被拖拽 */

<div id="dragtarget" draggable>拖动我</div>

ondragstart

当开始拖拽目标时,该事件立即触发,此时,可以在事件中设置拖拽的数据类型和数据。

这个事件绑定在你想要拖动的元素上。

document.addEventListener('dragtarget',function(event){

    event.stopPropagation();       

    event.preventDefault();

    //设置拖拽的数据类型和数据

    event.dataTransfer.setData('text', event.target.id)

});

ondragover

当拖动的元素拖动到目标容器内,未释放鼠标时,触发该事件,这个事件绑定在你想要拖动到的目标容器上。

document.addEventListener('droptarget', function(event){

    event.stopPropagation(); 

    event.preventDefault(); //这句代码必须设置,否则拖拽会被禁止

});

ondargenter

当元素进入目标容器时,触发该事件,这个事件也和上面的一样,绑定在目标容器上。

document.addEventListener('dragenter', function(event){

    event.stopPropagation(); 

    event.preventDefault(); 

    //可以做一些改变样式的操作

});

ondragleave

当元素离开目标容器时,触发该事件,这个事件同样绑定在目标容器上。

document.addEventListener('dragleave', function(event){

    event.stopPropagation(); 

    event.preventDefault(); 

    //可以做一些改变样式的操作

});

ondrop

当拖动元素进入目标容器后,释放鼠标时,触发该事件,该事件绑定在目标容器上。

document.addEventListener('drop', function(event){

    event.stopPropagation(); 

    event.preventDefault(); 

    //获取dataTransfer的值,并且只能在drop事件中获取

    event.dataTransfer.getData('text')

});

event.dataTransfer.effectAllowed

该属性含有六个值,具体效果可以自己去菜鸟教程里面进行试验,该属性的值在dragstart中设置

event.dataTransfer.dropEffect

该属性值与上面的event.dataTransfer.effectAllowed连用,如,将effectAllowed设置为move,那么该属性的值只能设置为move,否则拖拽将会被禁止。

上一篇 下一篇

猜你喜欢

热点阅读