首页 > 作文

vue拖拽添加的简单实现

更新时间:2023-04-04 11:46:07 阅读: 评论:0

本文主要介绍了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,默认为fal。选中的文本、图片、链接默认可以拖拽。
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>    &元旦辞旧迎新的诗句lt;/div>  </div></template><script>export default {  name: '',  components: {},  props: {    dataorigin: {      type: array    },    space: {      type: array    }  },  data() {    return {      spacelist: this.space,      isdragstatus: fal    }  },  computed: {},  watch: {},  created() { },  mounted() { },  methods: {    dragleave(e, item) {      // console.log(e, item)      if (item === 'main') {        this.isdragstatus = true      } el {        this.isdragstatus = fal      }      // 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-collap: collap;    .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;        ur-lect: none;        cursor: pointer;        &:hover {          color: #01bc77;          background: rgba(1, 188, 1信念的名人素材19, 0.1);        }      }    }  }  .myshuttle乐器排名left {    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拖拽添加的简单实现的文章就介绍到这了,更多相关vue拖拽添加内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 11:46:05,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/be95a215761324970c80e07233741091.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:vue拖拽添加的简单实现.doc

本文 PDF 下载地址:vue拖拽添加的简单实现.pdf

标签:拖拽   元素   数据   鼠标
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图