【VUE】Vue3自由拖拽标签

效果:

代码:

html 复制代码
<template>
<div>
    <div v-move class="box">
    <label class="move">拽我</label>  
    </div>
</div>
</template>
<script setup lang="ts">
    import { ref, Directive  } from 'vue';
    const vMove: Directive = {
    mounted(el: HTMLElement) {
        let moveEl = el.firstElementChild as HTMLElement;
        const mouseDown = (e: MouseEvent) => {
        //鼠标点击物体那一刻相对于物体左侧边框的距离=点击时的位置相对于浏览器最左边的距离-物体左边框相对于浏览器最左边的距离
        console.log(e.clientX, e.clientY, "-----起始", el.offsetLeft);
        let X = e.clientX - el.offsetLeft;
        let Y = e.clientY - el.offsetTop;
        const move = (e: MouseEvent) => {
            el.style.position = 'absolute';
            el.style.left = e.clientX - X + "px";
            el.style.top = e.clientY - Y + "px";
            console.log(e.clientX, e.clientY, "---改变");
        };
        document.addEventListener("mousemove", move);
        document.addEventListener("mouseup", () => {
            document.removeEventListener("mousemove", move);
        });
        };
        moveEl.addEventListener("mousedown", mouseDown);
    },
    }; 
</script>
<style lang="scss" scoped>
label{
    text-align: center;
    display: block;
    height: 30px;
    line-height: 30px;
    border: 1px solid #000;
    cursor:move;
}
.box {
  position: relative;
  left: 150px;
  top: 70px;
  transform: translate(-50%, -50%);
  width: 200px;
  height: 0;
  .move {
    text-align: center;
    display: block;
    height: 30px;
    line-height: 30px;
    border: 1px solid #000;
    cursor:move;
  }
}
</style>

ps:写完之后就忘了是参考的哪一个地址,如果雷同或侵犯到请告知,我会及时删除该博文。

相关推荐
纸上的彩虹7 分钟前
AI干不掉程序员,但却能让一个程序员干两个程序员的活儿~
前端·github copilot·ai 编程
码农不惑14 分钟前
Qt开发:QtWebEngine中操作选择文本
开发语言·javascript·qt·web
SunshineBrother15 分钟前
iOS项目,shell脚本,从大到小打印图片占用内存大小
前端
二川bro15 分钟前
前端内存优化实战指南:从内存泄漏到性能巅峰
前端
疏狂难除27 分钟前
基于SeaORM+MySQL+Tauri2+Vite+React等的CRUD交互项目
前端·react.js·前端框架
onejason29 分钟前
如何使用PHP爬虫获取Shopee(虾皮)商品详情?
java·前端
赵大仁32 分钟前
深入解析前后端分离架构:原理、实践与最佳方案
前端·架构
学不动学不明白36 分钟前
PC端项目兼容手机端
前端
无名之逆36 分钟前
Hyperlane:轻量、高效、安全的 Rust Web 框架新选择
开发语言·前端·后端·安全·rust·github·ssl
wkj00143 分钟前
js给后端发送请求的方式有哪些
开发语言·前端·javascript