官网地址:
https://www.npmjs.com/package/vuedraggable
https://github.com/SortableJS/Vue.Draggable

效果:https://sortablejs.github.io/Vue.Draggable/#/custom-clone
Draggable为基于Sortable.js的vue组件,用以实现拖拽功能。

一.安装

npm i -S vuedraggable

或者引入:

二.使用

1.场景:单个列表内部简单的拖拽(不克隆)

<template><div class="twoPage"> <draggable  :list="list" :disabled="!enabled" class="list-group" ghost-class="ghost":move="checkMove" @start="dragging = true" @end="dragging = false"><div class="list-group-item" v-for="element in list" :key="element.name">{{ element.name }}</div></draggable></div>
</template>
<script>
import draggable from "vuedraggable";
export default {data() {return {enabled: true,list: [{ name: "1 - John", id: 0 },{ name: "2 - Joao", id: 1 },{ name: "3 - Jean", id: 2 }],dragging: false};},components:{draggable},mounted() {},methods: {checkMove: function(e) {window.console.log("Future index: " + e.draggedContext.futureIndex);}}
};
</script>
<style lang="less">
.ghost {opacity: 0.5;background: #c8ebfb;
}
.list-group{display: flex;flex-direction: column;padding-left: 0;margin-bottom: 0;width: 300px;.list-group-item{cursor: move;position: relative;display: block;padding: 0.75rem 1.25rem;margin-bottom: -1px;background-color: #fff;border: 1px solid rgba(0,0,0,.125);}
}
</style>

效果如下:

2.场景:两个列表间的拖拽(不克隆)

左边往右边拖拽,拖过来一个,左边就少一个,右边就会多一个

<template><div class="twoPage"> <div class="el-row"><div class="el-col" :span="12"><h3>Draggable 1</h3><draggable class="list-group" :list="list1" group="people" @change="log"><divclass="list-group-item"v-for="(element, index) in list1":key="element.name">{{ element.name }} {{ index }}</div></draggable></div><div class="el-col" :span="12"><h3>Draggable 2</h3><draggable class="list-group" :list="list2" group="people" @change="log"><divclass="list-group-item"v-for="(element, index) in list2":key="element.name">{{ element.name }} {{ index }}</div></draggable></div></div></div>
</template>
<script>
import draggable from "vuedraggable";
export default {data() {return {list1: [{ name: "list1 - 1:John", id: 1 },{ name: "list1 - 2:Joao", id: 2 },{ name: "list1 - 3:Jean", id: 3 },{ name: "list1 - 4:Gerard", id: 4 }],list2: [{ name: "list2 - 1:Juan", id: 5 },{ name: "list2 - 2:Edgard", id: 6 },{ name: "list2 - 3:Johnson", id: 7 }]};},components:{draggable},mounted() {},methods: {log: function(evt) {window.console.log(evt);}}
};
</script>
<style lang="less">
.ghost {opacity: 0.5;background: #c8ebfb;
}
.list-group{display: flex;flex-direction: column;padding-left: 0;margin-bottom: 0;width: 300px;.list-group-item{cursor: move;position: relative;display: block;padding: 0.75rem 1.25rem;margin-bottom: -1px;background-color: #fff;border: 1px solid rgba(0,0,0,.125);}
}
</style>

options配置项,
sort:false 表示拖动时禁止其进行排序操作
group: {name: ‘field’, pull: ‘clone’, put: false} 表示进行克隆拖动操作,并且该name和拖动的目标位置group名称一致,如右侧draggable标签的group同样为field
draggable=“.item” 将可拖动属性下放到每一个按钮下

3.场景:两个列表间的拖拽(克隆)

效果:左边往右边拖拽,拖过来一个,左边不会少,但右边就会多一个,相当于复制。

代码场景2的区别在于:
:group="{ name: 'people', pull: 'clone', put: false }":表示可拖拽克隆出去,但不接收外面拖拽过来的
group="people":简单的内部拖拽

<template><div class="twoPage"> <div class="el-row"><div class="el-col" :span="12"><h3>Draggable 1</h3><draggable class="list-group" :list="list1" :group="{ name: 'people', pull: 'clone', put: false }" @change="log"><divclass="list-group-item"v-for="(element, index) in list1":key="element.name">{{ element.name }} {{ index }}</div></draggable></div><div class="el-col" :span="12"><h3>Draggable 2</h3><draggable class="list-group" :list="list2" group="people" @change="log"><divclass="list-group-item"v-for="(element, index) in list2":key="element.name">{{ element.name }} {{ index }}</div></draggable></div></div></div>
</template>
<script>
import draggable from "vuedraggable";
export default {data() {return {list1: [{ name: "list1 - 1:John", id: 1 },{ name: "list1 - 2:Joao", id: 2 },{ name: "list1 - 3:Jean", id: 3 },{ name: "list1 - 4:Gerard", id: 4 }],list2: [{ name: "list2 - 1:Juan", id: 5 },{ name: "list2 - 2:Edgard", id: 6 },{ name: "list2 - 3:Johnson", id: 7 }]};},components:{draggable},mounted() {},methods: {log: function(evt) {window.console.log(evt);}}
};
</script>
<style lang="less">
.ghost {opacity: 0.5;background: #c8ebfb;
}
.list-group{display: flex;flex-direction: column;padding-left: 0;margin-bottom: 0;width: 300px;.list-group-item{cursor: move;position: relative;display: block;padding: 0.75rem 1.25rem;margin-bottom: -1px;background-color: #fff;border: 1px solid rgba(0,0,0,.125);}
}
</style>

效果和场景2一样

4.场景:两个列表间的拖拽-自定义克隆(克隆)

:clone="cloneDog" 这个方法自定义克隆

<template><div class="twoPage"> <div class="el-row"><div class="el-col" :span="12"><h3>Draggable 1</h3><draggable class="list-group" :list="list1" :group="{ name: 'people', pull: 'clone', put: true }" @change="log" :clone="cloneDog"><divclass="list-group-item"v-for="(element, index) in list1":key="element.name">{{ element.name }} {{ index }}</div></draggable></div><div class="el-col" :span="12"><h3>Draggable 2</h3><draggable class="list-group" :list="list2" :group="{ name: 'people', pull: 'clone', put: true }" @change="log"><divclass="list-group-item"v-for="(element, index) in list2":key="element.name">{{ element.name }} {{ index }}</div></draggable></div></div></div>
</template>
<script>
import draggable from "vuedraggable";
export default {data() {return {list1: [{ name: "list1 - 1:John", id: 1 },{ name: "list1 - 2:Joao", id: 2 },{ name: "list1 - 3:Jean", id: 3 },{ name: "list1 - 4:Gerard", id: 4 }],list2: [{ name: "list2 - 1:Juan", id: 5 },{ name: "list2 - 2:Edgard", id: 6 },{ name: "list2 - 3:Johnson", id: 7 }]};},components:{draggable},mounted() {},methods: {log: function(evt) {window.console.log(evt);},cloneDog({ id }) {return {id: 8,name: 'cat'};}}
};
</script>
<style lang="less">
.ghost {opacity: 0.5;background: #c8ebfb;
}
.list-group{display: flex;flex-direction: column;padding-left: 0;margin-bottom: 0;width: 300px;.list-group-item{cursor: move;position: relative;display: block;padding: 0.75rem 1.25rem;margin-bottom: -1px;background-color: #fff;border: 1px solid rgba(0,0,0,.125);}
}
</style>

vuedraggable的使用相关推荐

  1. vuedraggable示例_vue拖拽列表vuedraggable

    效果: 要点: 安装 npm install vuedraggable 引入 import draggable from 'vuedraggable' 使用 <vuedraggable clas ...

  2. ios滚动条影响父页面 vue_父元素设置overflow:scroll时vuedraggable组件出现奇怪效果的解决方案...

    在使用 vu围幸业很例站闪以近着好务多如宽动为近着好edraggable 做拖拽效果时,因为要用到滚动条而使用了 overflow: scroll,导致了两个奇怪的效果,虽然折腾了一段时间,不过最后我 ...

  3. 10 分钟上手 Vue 组件 Vue-Draggable

    Vue 综合了 Angualr 和 React 的优点,因其易上手,轻量级,受到了广泛应用.成为了是时下火热的前端框架,吸引着越来越多的前端开发者! 本文将通过一个最简单的拖拽例子带领大家快速上手 V ...

  4. vuedraggable自由拖拽html,vue中draggable拖拽列表的使用

    1.安装 npm install vuedraggable 或者使用镜像安装 cnpm install vuedraggable 2.使用 首先在使用的组件中引入 import draggable f ...

  5. vuedraggable示例_vuedraggable快速入门

    value和list 这两个都可以给一个draggable注入数据源: /*value注入数据源*/ export default { data() { return { list:[{ name:' ...

  6. vuedraggable嵌套块拖拽_Vue 基于 vuedraggable 实现选中、拖拽、排序效果

    今天有个朋友说要做个效果:Vue实现拖拽排序,要有 checked,输出结果是排序后的,要全选,未选中的不能拖动. 其实我之前基于 Sortable 做过一个类似的效果.也给他看过了,没看太明白,他就 ...

  7. vuedraggable能实现自由拖拽功能吗?_基于 vue.js 仿禅道主页拖拽效果

    今天给大家分享一个超不错的Vue仿禅道首页拖拽布局VueDndKon. vue-dnd-kon 基于vuedraggable实现的仿禅道首页拖拽项目.支持模块上下及左右自由拖动布局. 主页分为左右两栏 ...

  8. vue可视化拖拽生成工具_GitHub - 1260215278/dragUI: 基于vuedraggable.js + uni 的可视化拖拽编程,自动生成项目,自动生成代码,自行导入第三方组件...

    dragUI 用于UNI可拖拽可视化编程 在线演示 效果图 基于 快速开始 参考uni官网安装普通uni项目(运行uni-app)运行到浏览器 另需要手动下载包npm install 项目目录 col ...

  9. vuedraggable拖拽插件使用

    文档地址:http://www.itxst.com/vue-draggable/tutorial.html 引入方式(npm): npm i -S vuedraggable 简单使用: <tem ...

  10. vue3使用vuedraggable实现拖拽

    1.npm i vuedraggable -S,使用这个命令,vue3会报错,如下图 2.使用npm uninstall vuedraggable -S 卸载,再使用npm i -S vuedragg ...

最新文章

  1. Yolo-v2 Visual Studio 2015安装时报错Team Explorer for Microsoft Visual Studio 2015解决办法
  2. Win10 ancona傻瓜安装tensorflow-gpu,ancona傻瓜安装pytorch-gpu
  3. ajax.call失效无请求,移动端ajax请求问题?
  4. 在VS2012中实现Ext JS的智能提示太简单了
  5. The superclass javax.servlet.http.HttpServlet was not found on the Java Build
  6. Redis之运维细节
  7. [论文阅读] Suggestive Annotation: A Deep Active Learning Framework for Biomedical Image Segmentation
  8. tomcat是一个应用服务器
  9. 计算机毕业设计ssm校园办公管理系统
  10. java中拦截器和过滤器详解
  11. mysql 参数set_MySQL--mysqldmp命令参数set-gtid-purged
  12. Unity Json存档读档操作
  13. Wi-Fi环境下基于注意力机制及深度学习的鲁棒被动感知技术
  14. leetcode 714. 买卖股票的时机含手续费 python
  15. Linux字体颜色的意思
  16. WLAN 无线局域网
  17. (Swift)Missing argument for parameter #1 in call
  18. c语言二级考试知识点,2016年计算机二级考试C语言知识点大全
  19. excel怎么更改坐标轴刻度_excel数值坐标轴刻度(excel表格插入图表里坐标轴的刻度能自定义设置吗)...
  20. linux 脚本含参,linux shell脚本文件的入参

热门文章

  1. 日文转换为罗马音_韩语发音和罗马音对照表
  2. 支小蜜食堂人脸识别就餐系统,“刷脸”消费更透明
  3. DO,DTO,VO,POJO 你知道吗?
  4. Dremio数据湖引擎(一):简介
  5. 深度解析淘宝个性化搜索人群标签的内幕!
  6. 南昌较高端酒店价格影响因素浅析(一)
  7. 【路径规划】基于蚁群算法实现多式联运路径规划问题matlab源码
  8. 偏爱BI的他们,率先实现“业务+品牌”共进双赢
  9. Spring Cloud第二季--Spring Cloud Bus
  10. dokuwiki教程 php,dokuwiki 之使用与教程 - Dokuwiki 中文教程