vue 组件拖拽

16,271次阅读
没有评论

共计 4933 个字符,预计需要花费 13 分钟才能阅读完成。

vue 组件拖拽

需求:将一个组件拖动至页面任何位置,记录并回显

要拖动的组件:

         
文本

拖动后的组件:

说明(如果是需要拖动一个组件并且回显在同一个组件,那么只需要将两个 div 的 style 组合就起来就可以了)我得项目里需求是需要多个组件,所以就是用了 for 循环,再次拖动的时候就传入 item,index,根据此参数修改组件对象的 left 和 top 记录位置

           
{{item.content}}

 开始拖拽的方法,记录刚开始拖拽时组件的位置:

// 开始拖拽位置
    dragstart(e, item, index) {this.left = this.$refs['ceshi'].getBoundingClientRect().left// 记录组件拖拽时的位置
      this.top = this.$refs['ceshi'].getBoundingClientRect().top},
    dragstart1(e, item, index) {
      this.left = e.clientX * 1
      this.top = e.clientY * 1
    },

拖拽后的方法,将拖拽后组件的位置存到数组中(mediaFrameList[index].flLeft):

  // 停止拖拽位置
    dragend(e, item, index) {
      let x = e.clientX - this.left
      let y = e.clientY - this.top
      const width = this.$refs.canvas.offsetWidth;
      const height = this.$refs.canvas.offsetHeight;

      this.mediaFrameList[index].flLeft = item.flLeft + x
      this.mediaFrameList[index].flTop = item.flTop + y
    }
 dragend1(e, item, content, flType) {
      let x = e.clientX - this.left
      let y = e.clientY - this.top
        this.mediaFrameList.push({
        flLeft: item.left + x,
        flTop: item.top + y,
        })}

最后,我上面的代码由于逻辑比较多,所以不看也行,拿着我下面的代码就是一个简单的 demo,没有使用任何插件

vue 组件拖拽

可以以这个为基础,这个开发空间还是很大的,比如:我在项目中还添加了设置组件的字体、字号、居中等等很多属性,自由度很高,还有回显示添加的等比缩,等比放大







原文地址: vue 组件拖拽

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-27发表,共计4933字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)