博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue-draggable 实现拖拽效果的使用方法
阅读量:4095 次
发布时间:2019-05-25

本文共 3190 字,大约阅读时间需要 10 分钟。

Vue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动,可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作,总之是一款非常优秀的vue拖拽组件。本篇将介绍如何搭建环境及简单的例子,使用起来特别简单对被拖拽元素也没有CSS样式的特殊要求。

安装方式

yarn add vuedraggablenpm i -S vuedraggable

属性说明

属性名称 说明
group :group= “name”,相同的组之间可以相互拖拽
sort :sort= “true”,是否开启内部排序,如果设置为false,它所在组无法排序,在其他组可以拖动排序
delay :delay= “0”, 鼠标按下后多久可以拖拽
touchStartThreshold 鼠标移动多少px才能拖动元素
disabled :disabled= “true”,是否启用拖拽组件
animation 拖动时的动画效果,还是很酷的,数字类型。如设置animation=1000表示1秒过渡动画效果
handle :handle=".mover" 只有当鼠标移动到css为mover类的元素上才能拖动
filter :filter=".unmover" 设置了unmover样式的元素不允许拖动
draggable :draggable=".item" 那些元素是可以被拖动的
ghostClass :ghostClass=“ghostClass” 设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
chosenClass :ghostClass=“hostClass” 被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dragClass :dragClass="dragClass"拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true
dataIdAttr dataIdAttr: ‘data-id’
forceFallback 默认false,忽略HTML5的拖拽行为,因为h5里有个属性也是可以拖动,你要自定义ghostClass chosenClass dragClass样式时,建议forceFallback设置为true
fallbackClass 默认false,克隆的DOM元素的类名
allbackOnBody 默认false,克隆的元素添加到文档的body中
fallbackTolerance 拖拽之前应该移动的px
scroll 默认true,有滚动区域是否允许拖拽
scrollFn 滚动回调函数
scrollSensitivity 距离滚动区域多远时,滚动滚动条
scrollSpeed 滚动速度

事件列表

事件名称 说明
start 开始拖动时触发的事件
add 从一个数组拖拽到另外一个数组时触发的事件
remove 移除事件
update 拖拽变换位置时触发的事件
end 拖拽完成时的事件
choose 鼠标点击选中要拖拽元素时的事件
unchoose 选中后松开鼠标的事件
sort 位置变化时的事件
clone 从一个数组拖拽到另外一个数组时触发的事件和add不同,clone是复制了数组元素

常用例子

单列拖拽案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBdFDtd1-1602817269688)(/Users/mxj/Library/Application Support/typora-user-images/image-20201016105135956.png)]

CSS 样式

/*被拖拽对象的样式*/ .item {
padding: 6px; background-color: #fdfdfd; border: solid 1px #eee; margin-bottom: 10px; cursor: move; } /*选中样式*/ .chosen {
border: solid 2px #3089dc !important; }

数据结构

//定义要被拖拽对象的数组,对数组结构也没特殊要求//元素被拖拽后数组里面对象的顺序也会随着改变 var myArray=[        {
id:10,name:'www.itxst.com'}, {
id:20,name:'www.baidu.com'}, {
id:30,name:'www.taobao.com'}, {
id:40,name:'www.yahoo.com'} ]

组件调用

{
{item.name}}

完整代码示例

表格拖动

handle=".move"表示鼠标放在样式为move的元素上面才能拖拽。

点击第一列数字进行拖动,其他列拖拽无效
{
{item.id}}
{
{item.name}}

完整示例

多列拖动

本文将介绍两两列或多列之间相互拖动,比如把某些角色或用户拖拽到每个权限组实现一些比较炫酷的效果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C59riXka-1602817269691)(/Users/mxj/Library/Application Support/typora-user-images/image-20201016105655840.png)]

关键部分

两列组件设置相同的group名就可以相互拖拽了

{
{item.name}}

完整代码

转载地址:http://javii.baihongyu.com/

你可能感兴趣的文章
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
React Native之原理浅析
查看>>
Git操作清单
查看>>
基础算法
查看>>
前端面试
查看>>
React Hooks 完全指南
查看>>
nvm 和 nrm 的安装与使用
查看>>
Flutter Boost的router管理
查看>>
Android Flutter混合编译
查看>>
微信小程序 Audio API
查看>>
[React Native]react-native-scrollable-tab-view(进阶篇)
查看>>
Vue全家桶+Mint-Ui打造高仿QQMusic,搭配详细说明
查看>>
React Native应用部署/热更新-CodePush最新集成总结(新)
查看>>
react-native-wechat
查看>>
基于云信的react-native聊天系统
查看>>