vue拖拉拽生成组件,vue3拖拽组件

  vue拖拉拽生成组件,vue3拖拽组件

  这篇文章主要为大家详细介绍了某视频剪辑软件实现可拖拽组件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文为大家分享了某视频剪辑软件实现可拖拽、拖拽组件,供大家参考,具体内容如下

  

描述:

  组件仅封装拖拽功能,内容通过#页眉、#默认值、#页脚插槽自定义

  

效果:

  

代码:

  模板

  差异

  ref=wrapper

  拖动条包装器

  差异

  ref=header

   class=拖动栏标题

  !-头部区域-

  插槽名称=header /

  /div

  div class=拖动栏-内容

  !-主内容区域-

  插槽名称=默认/

  /div

  div class=拖动栏-页脚

  !-底部区域-

  slot name=footer /

  /div

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  wrapperDom: null,

  headerDom: null,

  disX: 0,

  disY: 0,

  minLeft: 0,

  maxLeft: 0,

  minTop: 0,

  maxTop: 0,

  上一页:0,

  prevTop: 0,

  };

  },

  方法:{

  initDrag() {

  this.wrapperDom=this .$ refs.wrapper

  this.headerDom=this .$ refs.header

  这个。标题DOM。addevent侦听器( mousedown ,this.onMousedown,false);//点击头部区域拖拽

  },

  onMousedown(东)

  这个。disx=e . clientx-this。标题DOM。向左偏移;

  这个。disy=e . clienty-this。标题DOM。offsettop

  这个。最小左=这个。包装界。向左偏移;

  这个。min top=this。包装DOM。offsettop

  this.maxLeft=

  窗户。内宽-这个。闵左——这个。包装界。offsetwidth

  this.maxTop=

  窗户。内在高度-这个。min top-这个。包装界。偏高;

  const { left,top }=getComputedStyle(this。wrapperdom,false);

  这个。prev left=parse float(左);

  这个。prev top=parse float(top);

  文档。addevent侦听器( mousemove ,this.onMousemove,false);

  文档。addevent侦听器( mouseup ,this.onMouseup,false);

  文档。身体。风格。用户选择=“无”;//消除拖拽中选中文本干扰

  },

  onMousemove(e) {

  让left=e . clientx-this。disx

  让top=e . clienty-这个。disy

  if (-left this.minLeft) {

  左=-这个。min left

  } else if (left this.maxLeft) {

  左=这个。最大左侧;

  }

  if (-top this.minTop) {

  top=-这个。min top

  } else if (top this.maxTop) {

  top=this.maxTop

  }

  这个。包装界。风格。左=这个。prev left left px

  这个。包装界。风格。top=这个。prev top top px

  },

  onMouseup() {

  文档。removeeventlistener( mousemove ,this.onMousemove,false);

  文档。removeeventlistener( mouseup ,this.onMouseup,false);

  文档。身体。风格。用户选择= auto//恢复文本可选中

  },

  },

  已安装(){

  这个。initdrag();

  }

  };

  /脚本

  样式范围。拖动条包装器{

  位置:固定;

  z指数:2;

  top:50%;

  左:50%;

  transform: translate(-50%,-50%);

  显示器:flex

  伸缩方向:列;

  }。拖动栏标题{

  背景色:# eee

  光标:移动;/*拖拽鼠标样式*/

  }。拖动栏-内容{

  背景色:# fff

  }。拖动栏-页脚{

  背景色:# fff

  }

  /风格

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: