vue3拖拽组件vuedraggable

页面布局部分:

<template>
    <h1>切换上位置</h1>
    <div class="drag-box">
        <Draggable :list="list" :animation="100" class="list-group" :forceFallback="true" chosen-class="chosenClass"
            group="componentsGroup">
            <template #item="{ element }">
                <div class="items">
                    <div class="title">{{ element.label }}</div>
                    <img :src=element.img height="100" alt="111">
                </div>
            </template>
        </Draggable>
    </div>
    <h1>切换下位置111</h1>
    <div class="drag-box">
        <Draggable :list="cloneList" :animation="100" class="list-group" :forceFallback="true" chosen-class="chosenClass"
            group="componentsGroup">
            <template #item="{ element }">
                <div class="items">
                    <div class="title">{{ element.label }}</div>
                    <img :src=element.img height="100" alt="111">
                </div>
            </template>
        </Draggable>
    </div>
</template>

 图片及模块引入部分:

<script setup>
import { reactive } from "vue";
// 引入vuedraggable拖拽组件
import Draggable from "vuedraggable";
// 引入图片
import img1 from '@/assets/images/img1.jpg'
import img2 from '@/assets/images/img2.jpg'
import img3 from '@/assets/images/img3.jpg'
import img4 from '@/assets/images/img4.jpg'
import img5 from '@/assets/images/img5.jpg'

const list = reactive([
    {
        img: img1,
        label: "图片1",
        id: 1,
    },
    {
        img: img2,
        label: "图片2",
        id: 2,
    },
    {
        img: img3,
        label: "图片3",
        id: 3,
    },
    {
        img: img4,
        label: "图片4",
        id: 4,
    },
    {
        img: img5,
        label: "图片5",
        id: 5,
    },
]);
// 拉取存放位置的数组
const cloneList = reactive([]);
</script>

样式部分: 

<style lang="less" scoped>
.drag-box .items {
    display: flex;
    justify-content: space-between;
    width: 30%;
    padding: 20px;
    margin-bottom: 20px;
    background: #e3e3e3;
    border-radius: 8px;
    text-align: center;
}

.chosenClass {
    border: 3px solid red !important;
}
</style>

效果展示:

vuedraggable拖拽

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3和Vue2一样都可以使用vuedraggable插件进行不同组件拖拽。以下是使用vuedraggable插件实现不同组件拖拽的步骤: 1. 安装vuedraggable插件 在终端中执行以下命令: ``` npm install vuedraggable ``` 2. 引入vuedraggable插件 在需要使用vuedraggable插件的组件中引入: ```javascript import draggable from 'vuedraggable' ``` 3. 使用draggable组件 在模板中使用draggable组件,并设置相应的属性: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` 其中,v-model绑定了一个数组list,用于记录拖拽后的顺序;:element指定了拖拽的元素类型,这里为ul;:options指定了拖拽的选项,这里设置了group为items,表示不同的组件可以互相拖拽。 注意:v-model绑定的数组中的元素必须要有一个唯一的标识符,用于区分不同的元素。 4. 处理拖拽事件 当拖拽完成后,可以通过监听dragend事件来处理拖拽后的逻辑: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}" @dragend="onDragEnd"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` ```javascript methods: { onDragEnd(event) { console.log(event) // 处理拖拽完成后的逻辑 } } ``` 在onDragEnd方法中,可以获取到拖拽完成后的事件对象,通过事件对象可以获取到拖拽前后的元素顺序,从而进行相应的操作。 以上就是使用vuedraggable插件实现不同组件拖拽的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值