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>
相关推荐
自动化监测Learner23 分钟前
主流 Web 端地图引擎对比:选型指南与优劣分析
javascript
console.log('npc')40 分钟前
Git 冲突与 AI 协助指南
前端·人工智能·git·大模型
爱学堂IT分享2 小时前
Cesium可视化系统实战课程-Cesium教程学习
前端
糖墨夕2 小时前
理解大语言模型:Agent 的“大脑”
前端·agent
Rain的Java大神之路2 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
cpolar技术支持3 小时前
浏览器也能跑本地 AI:用 Transformers.js + WebGPU 做一个最小推理 Demo,cpolar 给同事远程体验
前端·ai·cpolar·webgpu·transformers.js
计算机毕设定制辅导-无忧学长3 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
计算机魔术师4 小时前
OpenAI 发布 GPT-6 Astra:多项基准刷新纪录, cybersecurity 能力达 Critical 阈值
前端
xy34534 小时前
Axure9.0中继器遮罩实现方法
前端·ui·html·axure·原型·产品设计
风骏时光牛马4 小时前
智能任务自动化协同AI工作流
前端