⽀持web端和移动端的拖拽排序插件dragula
Dragula是⼀款⽀持移动触摸屏设备的纯js元素拖放插件。这个元素拖放插件使⽤简单,浏览器兼容性好,能够实现通过⿏标或在移动设备中通过⼿指来拖动DOM元素的位置。
代码演⽰:
<script src="dist/dragula.js"></script>
<link rel="stylesheet"href="dist/dragula.css">
<script>
$(document).ready(function(){
dragula([shuffle]);//上⾯两个插件务必引⼊
});
</script>
<style>
#shuffle{
margin: 30px;
padding: 0;
}
.shuffle-item{
text-align: left;
margin: 5px;
padding: 5px;
border: solid 1px rgba(11,128,238,0.05);
border-radius: 5px;
background-color:rgba(11,128,238,0.05);
color: black;
}
</style>
<div id="shuffle">
<div class='shuffle-item'>test 1</div>
<div class='shuffle-item'>test 2</div>
青春个性签名<div class='shuffle-item'>test 3</div>放野火
<div class='shuffle-item'>test 4</div>
</div>
头⽂件dragula.js 和 dragula.css下载链接:
dragula的特点有:
色弱能考驾照吗
设置⾮常简单
没有外部依赖
可以⾃动对数据进⾏排序
被移动项带有半透明的视觉效果
⽀持移动触摸设备
兼容性好,⽀持IE7+的所有现代浏览器
安装
可以通过bower或npm来安装该元素拖放插件。
npm install dragula --save
bower install dragula.js --save
使⽤⽅法
结友而别
该元素拖动插件提供了⼀个最简单的API来让你可以在页⾯中拖放元素。
dragula(containers, options?)
默认情况下,dragula允许⽤户在containers中拖动⼀个元素,并将元素放置到containers列表的其它容器中。如果元素被放置在containers列表元素之外,插件将取消revertOnSpill和removeOnSpill选项。
注意:拖拽事件只会发⽣在⽤户⿏标左键点击的时候,并且没有meta键被按下。如果点击的是按钮或超链接元素,拖拽事件也会被忽略。
下⾯的例⼦允许⽤户将元素从left容器拖放到right容器,或从right容器拖放到left容器中。
dragula([left, right]);
配置参数
你也可以为它提供⼀些参数选项:
dragula(containers, {
moves: function (el, container) {
return true; // elements are always draggable by default
},
accepts: function (el, target, source, sibling) {
如何戒烟小妙招return true; // elements can be dropped in any of the `containers` by default
},
direction: 'vertical', // Y axis is considered when determining where an element would be dropped
copy: fal, // elements are moved by default, not copied
revertOnSpill: fal, // spilling will put the element back where it was dragged from, if this is true
科学英文removeOnSpill: fal // spilling will `.remove` the element, if this is true
});
options.accepts:该⽅法确保⼀个来⾃source的元素el能够在sibling元素之前放⼊到target容器之中。sibling元素可以为null,这会使元素被放置到容器的最后⼀个位置。注意:如果py设置为true,el元素会被设置为⼀个副本,替代原始的拖放元素。
Event Move Copy
drag 元素从source中隐藏 Nothing happens
drop 元素将移动到target中 元素会被克隆到target中
remove 元素会从DOM中移除 Nothing happens
cancel 元素会停留在source中 Nothing happens
酸菜猪脚
options.direction:当元素被拖放到⼀个容器中,它将被放置到最接近⿏标位置的点上。如果direction设置为vertical,将会使⽤Y 轴坐标作为参考带你,如果设置为horizontal会使⽤X轴坐标作为参考点。
事件
drake.cancel(revert):如果被drake管理的元素是当前被拖放的元素,这个⽅法会取消拖放事件。你也可以在该⽅法的调⽤级别中传⼊revert参数,效果与revertOnSpill设置为true相同。注意:⼀个"cancellation"将在下⾯的场景中会返回⼀个"cancel"事件:revertOnSpill设置为true
放置的⽬标(半透明的预览图)在source容器中,并且元素被放置到相同的容器中。
< (Events):drake是⼀个事件发送器。下⾯的事件可以使⽤(type, listener)来跟踪。
事件名称 参数 描述
drag el, container el从container中被拖拽
玩趣味
drop el, container, source el被放置到container中,它来⾃source
cancel el, container el被拖动但仍在原处,并最终回到container
remove el, container el被拖动但仍在原处,并最终被从DOM中移除。
shadow el, container el是拖放⽬的地的半透明预览,它会移动到container中。
drake.destroy():移除所有的拖放事件。如果.destroy在⼀个元素被拖动时触发,拖动将不会有效果。