vue3自定义拖拽指令

javascript 复制代码
<template>
  <div v-move class="box">
    
  </div>
</template>

<script setup lang="ts"> 
import { Directive } from 'vue'
const vMove:Directive = (el:HTMLElement) =>{
  const mousedown = (e:MouseEvent) =>{
    // 鼠标按下
    const startX = e.clientX - el.offsetLeft;
    const startY = e.clientY  - el.offsetHeight;
    const move = (e:MouseEvent)=> {
      console.log('坐标',e.clientX, e.clientY);
      // 鼠标移动
      const moveX = e.clientX;
      const moveY = e.clientY;
      const disX = moveX - startX;
      const disY = moveY - startY;
      el.style.top = disY + 'px'
      el.style.left = disX + 'px'
    }
    const up = () => {
      // 鼠标抬起
      document.removeEventListener('mousemove',move)
      document.removeEventListener('mouseup',up)
    } 
    document.addEventListener('mousemove',move)
    document.addEventListener('mouseup',up)
  }
  el.addEventListener('mousedown',mousedown)
} 
</script>

<style scoped>
.box {
  width: 400px;
  height: 400px;
  background: pink;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
</style>


相关推荐
程序leo源1 分钟前
C语言知识总结
c语言·开发语言·c++·经验分享·笔记·青少年编程·c#
沫璃染墨3 分钟前
二叉搜索树完全指南:从核心原理到增删查改全实现
开发语言·c++
shehuiyuelaiyuehao5 分钟前
关于进程和线程的关系
java·开发语言
一颗趴菜7 分钟前
微信小程序如何去下载PDF呢
前端·javascript
AaronCos15 分钟前
弄懂java泛型中的extends和super
java·开发语言
毋语天17 分钟前
Python 模块、包与异常处理:构建更稳健的程序
开发语言·python
IT观察者28 分钟前
Qt单例的优雅实现
开发语言·qt
H_unique42 分钟前
LangChain:消息
开发语言·langchain
求知也求真佳1 小时前
S07---S11 | 系统加固闭环总结:让你的 AI Agent 从 “能跑” 到 “稳跑、安全跑、长期跑”
开发语言·agent
JAVA学习通1 小时前
开云集致 Java开发 实习 一面
java·开发语言