vue 拖拽通过子元素拖拽父元素指令

vue 拖拽通过子元素拖拽父元素指令

需求 拖拽头部 拖动整个框

复制代码
// candrag.js中的代码如下 directive
// 通过子元素 控制移动父元素,  如果 需要直接控制父元素可以再写一个自定义指令 或者改造下这个指令
export default {
  // 定义 Vue 插件
  install(Vue) {
    Vue.directive('candrag', {
      // 全局指令名为 v-candrag
      inserted(el) {
        el.onmousedown = function(ev) {
          // 获取鼠标按下时的偏移量(鼠标位置 - 元素位置)
          const disX = ev.clientX - el.parentNode.offsetLeft
          const disY = ev.clientY - el.parentNode.offsetTop
          document.onmousemove = function(ev) {
            // 获取鼠标实时移动时,元素的位置(鼠标实时位置 - 偏移量)
            const l = ev.clientX - disX
            const t = ev.clientY - disY
            // 实时设置元素位置
            el.parentNode.style.left = l + 'px'
            el.parentNode.style.top = t + 'px'
          }
          document.onmouseup = function() {
            // 鼠标抬起时,销毁移动事件和鼠标抬起事件
            document.onmousemove = null
            document.onmouseup = null
          }
        }
      }
    })
  }
}

使用

复制代码
main.js
import candrag from '@/directive/candrag'
Vue.use(candrag)

使用的地方
<div>
	<div v-candrag></div>
	<div></div>
</div>
相关推荐
沙漠之主8 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
hasty8 小时前
不上传新包,也能改变用户拿到的版本:npm dist-tag 的 OIDC 权限治理
前端·npm·node.js
Csvn8 小时前
diff 算法(虚拟 DOM Reconciliation)
前端
前端snow9 小时前
ai agent --- 文件存储
前端
Frag0ut9 小时前
Chrome四大版本获取及共存指南:Stable/Beta/Dev/Canary
前端·chrome·浏览器·dev·beta·canary·共存版
IT_陈寒11 小时前
SpringBoot自动配置坑了我一把,原来是这样绕过去的
前端·人工智能·后端
广州华水科技11 小时前
单北斗GNSS变形监测在大坝安全监测中的应用与优势
前端
zeng不错11 小时前
B站 173 个投稿活动看到眼瞎?我写了个扩展,主打一个精准打击
前端
Latchh11 小时前
前端导出的JPEG红字发糊,质量要拉到100才清楚
前端·图像处理·人工智能·计算机视觉
默_笙12 小时前
🚦 请三个 AI 考官给 RAG 打分:量化评估实战(下)
前端·javascript