vue实现拖拽交换位置
作者:包子源 发布时间:2024-04-30 08:45:51
标签:vue,拖拽,交换位置
本文实例为大家分享了vue实现拖拽交换位置的具体代码,供大家参考,具体内容如下
<template>
<div class="root">
<transition-group tag="div" class="container">
<div
class="item"
:class="'item' + i"
v-for="(item, i) in items"
:key="item.key"
:style="{ 'background-color': item.color, border: '1px solid' }"
draggable="true"
@dragstart="handleDragStart($event, item)"
@dragover.prevent="handleDragOver($event, item)"
@dragenter="handleDragEnter($event, item)"
@dragend="handleDragEnd($event, item)"
>
<div>{{ item }}</div>
</div>
</transition-group>
</div>
</template>
<script>
export default {
name: "Toolbar",
data() {
return {
items: [
{ key: 1, color: "#3883a0" },
{ key: 2, color: "#4883a0" },
{ key: 3, color: "#5883a0" },
{ key: 4, color: "#6883a0" },
{ key: 5, color: "#7883a0" },
{ key: 6, color: "#8883a0" },
{ key: 7, color: "#9883a0" },
],
ending: null,
dragging: null,
};
},
methods: {
handleDragStart(e, item) {
this.dragging = item;
},
handleDragEnd(e, item) {
if (this.ending.key === this.dragging.key) {
return;
}
let newItems = [...this.items];
const src = newItems.indexOf(this.dragging);
const dst = newItems.indexOf(this.ending);
newItems.splice(src, 1, ...newItems.splice(dst, 1, newItems[src]));
console.log(newItems);
this.items = newItems;
this.$nextTick(() => {
this.dragging = null;
this.ending = null;
});
},
handleDragOver(e) {
// 首先把div变成可以放置的元素,即重写dragenter/dragover
// 在dragenter中针对放置目标来设置
e.dataTransfer.dropEffect = "move";
},
handleDragEnter(e, item) {
// 为需要移动的元素设置dragstart事件
e.dataTransfer.effectAllowed = "move";
this.ending = item;
},
},
};
</script>
<style lang="less" scoped>
.container {
display: flex;
flex-wrap: wrap;
}
.item {
width: 200px;
height: 200px;
margin: 10px;
color: #fff;
transition: all linear 0.3s;
}
.item0 {
width: 400px;
}
</style>
效果
来源:https://blog.csdn.net/ziwoods/article/details/123665613


猜你喜欢
- 今天看到同事参与小米的抢购,几经数个星期的尝试,终于抢到了一台小米电视……看了一下小米的抢购流程,似乎可以用程序可破。于是想写点东西玩玩(你
- 因为工作的原因,开发过一个拆分字符串的SQL函数,现在把它贴出来,与大家共勉学习。该函数如下: &
- 计算机为数组分配一段连续的内存,从而支持对数组随机访问;由于项的地址在编号上是连续的,数组某一项的地址可以通过将两个值相加得出,即将数组的基
- 前言:开发环境:python 3.8pycharm 2021.2 专业版代码实现:发送请求获取数据解析数据(筛选数据)保存数据连接数据库请求
- 本文介绍了react-native ListView下拉刷新上拉加载实现。分享给大家,具体如下:先看效果图下拉刷新React Native提
- 在新建数据库或附加数据库后,想添加关系表,结果出现下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使
- Lists列表可以包含不同类型的元素,甚至是Lists,但是通常是同一个类型的。if __name__ == '__main__
- jQuery.sheet 是一个用于创建 Web 电子表格的 jQuery插件,其功能及界面风格和微软的 Excel 非常相似,使得用户不至
- 背景:之前写的接口测试一直没有支持无限嵌套对比key,上次testerhome逛论坛,有人分享了他的框架,看了一下,有些地方不合适我这边自己
- 之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片。最近做项目,打算换个方法上传图片。Android发展到现在,Okhttp
- openpyxlopenpyxl模块属于第三方模块,是一个在 python 中能够处理 excel 文件的模块,还有比较出名的是xlrd、x
- 如下所示:# 访问百度,模拟自动输入搜索# 代码中引入selenium版本为:3.4.3# 通过Chrom浏览器访问发起请求# Chrom版
- 最近网上流行着一些采集程序,更多人拿着这些东西在网上叫卖,很多不太懂的人看着那些程序眼羡,其实如果你懂一些ASP,了解自动采集程序的原理后,
- 分享人:轻侯设计师常有这样的疑惑:如何知道用户浏览网页的习惯?如何设计出符合用户使用习惯的网页?如何从搜索引擎带来更多的流量?眼动研究可以帮
- 1.使用Paramiko登陆到单台交换机实验拓扑云彩桥接到本机环回接口:192.168.1.1/24三层交换机IP:192.168.1.2/
- Vuexvuex执行过程🎈相当于一个公共的资源库,保存共有的数据🎈使用场景:点击按钮后,将数据保存到store身上,跳转路由后使用🎈将act
- 在保持合理的数据采集上,使用python爬虫也并不是一件坏事情,因为在信息的交流上加快了流通的频率。今天小编为大家带来了一个稍微复杂一点的应
- JS实现轮播图实现结果图:需求:1 根据图片动态添加小圆点 2 目标移动到小圆点轮播图片 3 鼠标离开图片,定时轮播图片;鼠标在图片上时暂停
- 本文实例为大家分享了python实现年会抽奖程序的具体代码,供大家参考,具体内容如下发一下自己写的公司抽奖程序。需求:公司年会要一个抽奖程序
- SQL Server会把经常使用到的数据缓存在内存里(就是数据页缓存),用以提高数据访问速度。因为磁盘访问速度远远低于内存,所以减少磁盘访问