广告
返回顶部
首页 > 资讯 > 精选 >vue如何实现拖拽添加
  • 813
分享到

vue如何实现拖拽添加

2023-06-22 07:06:09 813人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“Vue如何实现拖拽添加”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现拖拽添加”这篇文章吧。效果图并没有判断是否重复,没有删除旧数据数据体 <

这篇文章主要为大家展示了“Vue如何实现拖拽添加”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现拖拽添加”这篇文章吧。

效果图

并没有判断是否重复,没有删除旧数据

vue如何实现拖拽添加

数据体

 <MyShuttle :dataOrigin='[          {            Name:"数据001",            Id:"数001",          },          {            Name:"数据002",            Id:"数001",          },          {            Name:"数据003",            Id:"数001",          }]'                 :space='[{            Name:"右001",            Id:"右001",            }]' />

代码

draggable开启可拖动

@dragenter.prevent @draGover.prevent// 阻止浏览器默认行为,不然会显示一个叉叉,不好看

阻止默认行为

@dragleave.stop=“dragleave($event, ‘main')”

进入离开当前元素都会触发

@dragend.stop=“dragEnd($event, item)”

放下拖拽内容触发

拖拽事件和属性

标记 这个很重要!!! 这个决定了拖拽事件的行为。当点击开始拖拽之后,鼠标点击所在的位置就是标记。
dragstart:当单击下鼠标,并移动之后执行。
drag:在dragstart执行之后,鼠标在移动时连续触发。
dragend:当拖拽行为结束,也就是松开鼠标的时候触发。
dragenter:当正在拖拽的元素的标记进入某个Dom元素时触发,自身首先会触发。被进入的Dom元素会触发这个事件。
dragover:当拖拽的元素的标记在进入的Dom元素上移动时触发,在自身移动时也会触发。
dragleave:当拖拽的元素在离开进入的Dom时触发。

H5拖拽属性 draggable

draggable:当需要某个元素可以拖拽时,需设置为true,默认为false。选中的文本、图片、链接默认可以拖拽。
DataTransfer对象:该属性用于保存拖放的数据和交互信息,该组件没有使用到,暂忽略。

当鼠标移动到目标div盒子才会追加,简单的才最能说明问题

<template>  <div class="MyShuttle">    <div class="MyShuttleLeft">      <div class="title">数据源</div>      <div class="dataBox" @dragleave.stop="dragleave($event, 'main')">        <div v-for="(item, i) in dataOrigin" :key="i" class="dataList" draggable @dragenter.prevent          @dragover.prevent @dragstart.stop="dragstart($event, item)"          @dragend.stop="dragEnd($event, item)">          {{ item.Name}}        </div>      </div>    </div>    <div class="MyShuttleCenter"></div>    <div class="MyShuttleRight">      <div class="title">数据源</div>      <div ref="MyShuttleRight" class="dataBox">        <div v-for="(item, i) in spaceList" :key="i" class="dataList" draggable @dragenter.prevent          @dragover.prevent>          {{ item.Name}}        </div>      </div>    </div>  </div></template><script>export default {  name: '',  components: {},  props: {    dataOrigin: {      type: Array    },    space: {      type: Array    }  },  data() {    return {      spaceList: this.space,      isDragStatus: false    }  },  computed: {},  watch: {},  created() { },  mounted() { },  methods: {    dragleave(e, item) {      // console.log(e, item)      if (item === 'main') {        this.isDragStatus = true      } else {        this.isDragStatus = false      }      // console.log(this.isDragStatus)    },    dragstart(e, item) {      // console.log(e, item)    },    dragEnd(e, item) {      const top = this.$refs.MyShuttleRight.getBoundinGClientRect().top      const right = this.$refs.MyShuttleRight.getBoundingClientRect().right      const bottom = this.$refs.MyShuttleRight.getBoundingClientRect().bottom      const left = this.$refs.MyShuttleRight.getBoundingClientRect().left      console.log(top, right, bottom, left)      console.log(e.clientX, e.clientY, item)      if (this.isDragStatus && e.clientY > top && e.clientY < bottom && e.clientX > left && e.clientX < right) {        this.spaceList.push(item)        console.log(this.spaceList.indexOf(item))      }    }  }}</script><style scoped lang="sCSS">.MyShuttle {  width: 100%;  height: 308px;  display: flex;  justify-content: space-between;  // 左右盒子公共样式  .MyShuttleLeft,  .MyShuttleRight {    border: 1px solid #DDDddd;    border-collapse: collapse;    .title {      box-sizing: border-box;      width: 100%;      height: 40px;      background: #f5f5f5;      border-radius: 4px 4px 0px 0px;      border-bottom: 1px solid #dddddd;      padding: 10px 16px;      font-size: 14px;      font-family: PingFangSC-Regular, PingFang SC;      font-weight: 400;      color: #333333;      line-height: 20px;    }    .dataBox {      width: 100%;      height: 228px;      overflow: auto;      padding: 6px 0;      .dataList {        width: 96%;        height: 40px;        box-sizing: border-box;        font-size: 14px;        font-family: PingFangSC-Regular, PingFang SC;        font-weight: 400;        color: #666;        line-height: 20px;        margin: 0 2% 10px;        padding: 10px 16px;        border: 1px solid #ddd;        border-radius: 4px;        user-select: none;        cursor: pointer;        &:hover {          color: #01bc77;          background: rgba(1, 188, 119, 0.1);        }      }    }  }  .MyShuttleLeft {    width: 362px;    height: 100%;    background: #ffffff;    border-radius: 4px;  }  .MyShuttleCenter {    width: 64px;    height: 100%;  }  .MyShuttleRight {    width: 362px;    height: 100%;    background: #ffffff;    border-radius: 4px;  }}</style>

以上是“vue如何实现拖拽添加”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: vue如何实现拖拽添加

本文链接: https://www.lsjlt.com/news/303252.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue如何实现拖拽添加
    这篇文章主要为大家展示了“vue如何实现拖拽添加”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现拖拽添加”这篇文章吧。效果图并没有判断是否重复,没有删除旧数据数据体 <...
    99+
    2023-06-22
  • vue拖拽添加的简单实现
    本文主要介绍了vue拖拽添加的简单实现,具体如下: 效果图 并没有判断是否重复,没有删除旧数据 数据体 <MyShuttle :dataOrigin='[ ...
    99+
    2022-11-12
  • vue实现拖拽小图标
    如何给vue项目里面写拖拽悬浮小图标呢,供大家参考,具体内容如下 首先 1、html文件 一定要给父盒子一个ID <div       class="xuanfu"      ...
    99+
    2022-11-13
  • Vue实用功能之实现拖拽元素、列表拖拽排序
    目录Vue实现拖拽元素、列表拖拽排序组件使用补充:排序动画总结Vue实现拖拽元素、列表拖拽排序 需求:    1、左右两个容器,左边和右边的元素可以拖动...
    99+
    2022-11-13
    vue列表拖拽排序 vue实现拖拽功能 vue实现组件拖拽
  • html5如何实现拖拽
    这篇文章主要介绍了html5如何实现拖拽,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html5实现拖拽的方法:首先新建一个空的HTML5结构;然后在body元素中放置一个d...
    99+
    2023-06-15
  • vue如何实现可拖拽的dialog弹框
    这篇文章主要介绍了vue如何实现可拖拽的dialog弹框,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:element的dialog弹框在项目中挺常用的。但有时候嵌套...
    99+
    2023-06-15
  • vue实现弹窗拖拽效果
    本文实例为大家分享了vue实现弹窗拖拽效果的具体代码,供大家参考,具体内容如下 前言 实现拖拽其实简单来说就分为三步 一、创建一个js文件 因为本身dialog窗口不具备移动拖拽能力...
    99+
    2022-11-13
  • vue实现图片拖拽功能
    本文实例为大家分享了vue实现图片拖拽功能的具体代码,供大家参考,具体内容如下 1、主要涉及到的元素知识,示意图: 2、js代码部分: directives: { dr...
    99+
    2022-11-12
  • vue实现拖拽交换位置
    本文实例为大家分享了vue实现拖拽交换位置的具体代码,供大家参考,具体内容如下 <template>   <div class="root">     <...
    99+
    2022-11-13
  • vue实现拖拽窗口功能
    本文实例为大家分享了vue拖拽窗口简单实现代码,供大家参考,具体内容如下 效果 实现代码 <template>   <transition>     <...
    99+
    2022-11-13
  • vue实现div高度可拖拽
    本文实例为大家分享了vue实现div高度可拖拽的具体代码,供大家参考,具体内容如下 这里有一个现成的demo,可以实现页面div的拖拽功能,但是和我想要的效果不是很一样,所以说后边有...
    99+
    2022-11-12
  • vue实现拖拽排序效果
    本文实例为大家分享了vue实现拖拽排序效果的具体代码,供大家参考,具体内容如下 效果预览 组件 drag.vue <template>   <Transition...
    99+
    2022-11-13
  • vue实现多栏布局拖拽
    本文实例为大家分享了vue实现多栏布局拖拽的具体代码,供大家参考,具体内容如下 一、目标 vue 实现多个盒子(用户根据实际场景决定盒子数量)自由拖拽,改变宽度。 二、应用场景 可自...
    99+
    2022-11-12
  • Element-UI Table组件上如何添加列拖拽效果
    这篇文章将为大家详细讲解有关Element-UI Table组件上如何添加列拖拽效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Element-UI 的 Table 组...
    99+
    2022-10-19
  • vue拖拽组件vuedraggable API options如何实现盒子之间相互拖拽排序
    小编给大家分享一下vue拖拽组件vuedraggable API options如何实现盒子之间相互拖拽排序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下...
    99+
    2022-10-19
  • react-dnd如何实现拖拽
    这篇文章主要介绍了react-dnd如何实现拖拽的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react-dnd如何实现拖拽文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • vue实现可拖拽的dialog弹框
    本文主要介绍了vue实现可拖拽的dialog弹框,分享给大家,具体如下: element的dialog弹框在项目中挺常用的。但有时候嵌套的话会遮住,体验不好。拖拽形式的弹框会提高用...
    99+
    2022-11-12
  • Vue实现拖拽式分割布局
    本文实例为大家分享了Vue实现拖拽式分割布局的具体代码,供大家参考,具体内容如下 示例展示 代码 特地写了一个demo代码,可以直接复制下来运行 <!DOCTYPE html...
    99+
    2022-11-13
  • VUE使用draggable实现组件拖拽
    本文实例为大家分享了draggable组件拖拽实例,供大家参考,具体内容如下 实现步骤 1、导入draggable依赖 npm i -S vuedraggable 2、引入dragg...
    99+
    2022-11-13
  • vue-draggable实现pc端拖拽效果
    本文实例为大家分享了vue-draggable实现pc端拖拽效果的具体代码,供大家参考,具体内容如下 为了实现下面这种布局可拖拽整合调整位置 拖拽前: 拖拽后: 一、安装 npm...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作