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>


相关推荐
文火冰糖的硅基工坊12 小时前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
_院长大人_13 小时前
el-table-column show-overflow-tooltip 只能显示纯文本,无法渲染 <p> 标签
前端·javascript·vue.js
SevgiliD13 小时前
el-table中控制单列内容多行超出省略及tooltip
javascript·vue.js·elementui
yudiandian201413 小时前
02 Oracle JDK 下载及配置(解压缩版)
java·开发语言
要加油哦~13 小时前
JS | 知识点总结 - 原型链
开发语言·javascript·原型模式
鄃鳕14 小时前
python迭代器解包【python】
开发语言·python
new coder14 小时前
[c++语法学习]Day10:c++引用
开发语言·c++·学习
驰羽14 小时前
[GO]GORM 常用 Tag 速查手册
开发语言·后端·golang
Narcissiffo14 小时前
【C语言】str系列函数
c语言·开发语言
workflower14 小时前
软件工程与计算机科学的关系
开发语言·软件工程·团队开发·需求分析·个人开发·结对编程