vue自定义v-drag拖拽指令

HTML:

<div class="crop-modal" v-drag draggable="false">
    可拖动的地方
</div>

在directives中自定义指令 v-drag
directives与data平级

directives: {
    drag (el) {
      let oDiv = el // 当前元素
      // let self = this // 上下文
      // 禁止选择网页上的文字
      document.onselectstart = function () {
        return false
      }
      oDiv.onmousedown = function (e) {
        // 鼠标按下,计算当前元素距离可视区的距离
        let disX = e.clientX - oDiv.offsetLeft
        let disY = e.clientY - oDiv.offsetTop
        document.onmousemove = function (e) {
          // 通过事件委托,计算移动的距离
          let l = e.clientX - disX
          let t = e.clientY - disY
          // 移动当前元素
          oDiv.style.left = l + 'px'
          oDiv.style.top = t + 'px'
        }
        document.onmouseup = function (e) {
          document.onmousemove = null
          document.onmouseup = null
        }
        // return false不加的话可能导致黏连,就是拖到一个地方时div粘在鼠标上不下来,相当于onmouseup失效
        return false
      }
    }
  },

CSS:

.crop-modal{
	position: fixed;
    left: 0;
    top: 0;
    z-index: 99;
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-drag-resize 是一个基于 Vue.js 的拖拽和调整大小的组件库。它提供了一些可以帮助我们在网页中实现拖拽和调整大小功能的指令和选项。 首先,我们可以通过在元素上添加 `v-drag` 指令来启用拖拽功能。在拖拽时,我们可以设置一些选项,比如 `axis` 可以设置只能在水平或垂直方向拖拽,`handle` 可以指定拖拽的句柄元素等等。拖拽时还提供了一些事件,比如 `drag-start`、`dragging` 和 `drag-end`,我们可以在这些事件中执行一些自定义的逻辑。 其次,我们可以通过在元素上添加 `v-resize` 指令来启用调整大小功能。调整大小时,我们也可以设置一些选项,比如 `handles` 可以指定调整大小的句柄位置,`axis` 可以限制只能在水平或垂直方向调整大小等等。调整大小时也提供了一些事件,比如 `resize-start`、`resizing` 和 `resize-end`,我们可以在这些事件中执行一些自定义的逻辑。 除了拖拽和调整大小功能,vue-drag-resize 还提供了一些其他的功能。比如,我们可以通过 `setActive` 方法来激活一个元素的拖拽或调整大小功能,我们还可以通过 `disable` 方法来禁用一个元素的拖拽或调整大小功能。此外,它还提供了一些有用的工具函数,比如 `getTransform` 可以获取一个元素的当前变换矩阵。 总的来说,vue-drag-resize 是一个简单易用的拖拽和调整大小的组件库,提供了丰富的选项和事件,使我们能够轻松地实现网页中的拖拽和调整大小功能。无论是构建交互式的网页应用还是制作可视化编辑器,它都可以提供帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值