vue-draggable-plus 拖拽组件使用

1、拖拽图片

2、判断图片数量之后禁止拖拽

<template>
  <el-row class="row-bg" justify="space-evenly">
    <el-col :span="6">
      <el-card>

        <div class="demo-image">
          <VueDraggable :disabled="isDisabled" v-model="list1" :animation="150"
            :group="{ name: 'people', pull: 'clone', put: false }" :sort="false"
            class="flex flex-col gap-2 p-4 w-300px bg-gray-500/5 rounded">
            <div v-for="item in list1" :key="item.id" class="cursor-move h-50px bg-gray-500/5 rounded p-3">

              <el-image style="width: 100px; height: 100px" :src="item.url" fit="cover" />

            </div>
          </VueDraggable>
        </div>

      </el-card>
    </el-col>
    <el-col :span="6">
      <el-card>
        <VueDraggable v-model="list2" :animation="150" group="people"
          class="demo-image  flex flex-col gap-2 p-4 w-300px m-auto bg-gray-500/5 rounded overflow-auto"
          :onAdd="hasMessage">
          <div v-for="item in list2" :key="item.id" class="cursor-move h-50px bg-gray-500/5 rounded p-3">
            <el-image style="width: 100px; height: 100px" :src="item.url" fit="cover" />
          </div>
        </VueDraggable>
      </el-card>
    </el-col>
  </el-row>
</template>

<script lang="ts" setup>

import { ref } from 'vue'
import { VueDraggable } from 'vue-draggable-plus'
import { ElMessage } from 'element-plus'

const isDisabled = ref(false)
// 要拖拽的图片的地址
const list1 = ref([
  {
    name: '图片1',
    url: "https://th.bing.com/th/id/R.98415963b412fccea2d8c4e2b3f695e8?rik=HdwmF8f2XbTwUQ&riu=http%3a%2f%2fi1.hdslb.com%2fbfs%2farchive%2f25359e94f3481702ce699cc867b236c9d056adbc.jpg&ehk=aFN1%2f0CPFS8Bsm7lcpdWzXbRVVRniH9WE9GQ3nVnTNc%3d&risl=&pid=ImgRaw&r=0",
    id: '1'
  },
  {
    name: '图片2',
    url: "https://puui.qpic.cn/vpic_cover/h3345zrkd0f/h3345zrkd0f_hz.jpg/1280",
    id: '2'
  },
  {
    name: '图片3',
    url: "https://puui.qpic.cn/vpic_cover/j3505kdeuyl/j3505kdeuyl_1678095683_hz.jpg/1280",
    id: '3'
  },
  {
    name: '图片4',
    url: "https://p0.itc.cn/q_70/images03/20220911/7ee51ce1d6f54f9e9f8e6e01e2974b24.jpeg",
    id: '4'
  },
])
const list2 = ref(
  [
  ]
)

//元素从一个列表拖拽到另一个列表时触发
function hasMessage() {
  const len = list2.value.length
  if (len > 3) {
    isDisabled.value = true
    ElMessage({
      showClose: true,
      message: '已经四张图片了',
      type: 'warning',
    })
  }

}

</script>

<style>
html,
body {
  width: 100%;
}

@media screen and (min-width: 1024px) {
  #app {
    width: 100%;
    height: 100%;
    display: block;
    max-width: 100%;
    /* 将 max-width 设置为 0,取消其作用 */
  }
}

.row-bg {
  padding: 10px 0;
  background-color: #f9fafc;
  text-align: center;
}

.demo-image {
  height: 50vh;
}
</style>
  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue-draggable-plus是基于Vue.js的可拖拽组件库。它是基于vuedraggable的扩展,提供了更多的功能和选项来满足不同的需求。使用Vue-draggable-plus可以方便地实现拖拽功能,并且可以对属性重复添加问题进行处理。 安装Vue-draggable-plus,可以使用以下命令: ``` yarn add vue-draggable-plus npm install vue-draggable-plus --save ``` 在处理属性重复添加问题时,可以通过监听拖拽事件来判断右侧属性列表中是否已存在相同属性。在拖拽事件中,可以通过事件参数获取相关的数据信息。例如,通过`e.draggedContext.element`可以获取拖动元素绑定的数据对象,通过`e.relatedContext.list`可以获取目标列表的数据。可以使用这些数据进行简单的对比,如果已存在相同属性,则返回false,终止拖动动作。 Vue-draggable-plus提供了丰富的事件和选项,可以根据具体的需求进行定制和配置。通过合理地使用这些功能和选项,可以实现属性重复添加问题的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于vue使用vue-draggable实现图片拖拽效果(项目中使用简单描述)](https://blog.csdn.net/m0_60602811/article/details/127106131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vuedraggable实战:结合具体应用场景实现列表内拖拽排序、列表间移动、复制,介绍、安装、使用、坑点及解决...](https://blog.csdn.net/seawaving/article/details/128083596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值