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>


相关推荐
北极糊的狐3 分钟前
若依项目vue前端启动键入npm run dev 报错:不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·javascript·vue.js
星火开发设计4 分钟前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
曹牧26 分钟前
Java:强类型转换
开发语言·python
wuguan_29 分钟前
C#之线程
开发语言·c#
LXS_35732 分钟前
STL - 函数对象
开发语言·c++·算法
木千37 分钟前
Qt5.15.2安装MSVC2019编译器
开发语言·qt
仟濹41 分钟前
【Java加强】1 异常 | 打卡day1
java·开发语言·python
去往火星44 分钟前
Qt6 CMake 中引入 Qt Linguist 翻译功能
开发语言·qt
阿猿收手吧!1 小时前
【C++】atmoic原子操作与并发安全全解析
开发语言·c++·安全
有诺千金1 小时前
VUE3入门很简单(4)---组件通信(props)
前端·javascript·vue.js