首页 > 其他分享 >vue3+ts 指令拖拽div案例

vue3+ts 指令拖拽div案例

时间:2024-05-20 16:20:10浏览次数:17  
标签:el 50% const move ts addEventListener vue3 div document

<template>
<div class="box" v-move>
<div class="header"></div>
<div>内容</div>
</div>
</template>

<script setup lang="ts">
import { ref, Directive, DirectiveBinding } from "vue";
const vMove: Directive<any, void> = (el: HTMLElement, bingding: DirectiveBinding) => {
let moveElement: HTMLDivElement = el.firstElementChild as HTMLDivElement;
console.log(moveElement);
const mouseDown = (e: MouseEvent) => {
let X = e.clientX - el.offsetLeft;
let Y = e.clientY - el.offsetTop;

const move = (e: MouseEvent) => {
console.log(e);
el.style.left = e.clientX - X + "px";
el.style.top = e.clientY - Y + "px";
};
document.addEventListener("mousemove", move);
document.addEventListener("mouseup", () => {
document.removeEventListener("mousemove", move);
});
};
moveElement.addEventListener("mousedown", mouseDown);
};
</script>

<style lang="scss">
.box {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 200px;
height: 200px;
border: 3px solid black;
.header {
height: 20px;
background: black;
}
}
</style>
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_45932157/article/details/134658440

标签:el,50%,const,move,ts,addEventListener,vue3,div,document
From: https://www.cnblogs.com/ZhangmengC/p/18202244

相关文章

  • 即构 UIKits 重磅发布!高效开发与自定义UI兼备,打造互动场景新标杆
    即构UIKits上线,新一代场景化实时互动SDK!即构科技发布了首款面向中小团队的整合型实时互动产品UIKits,基于场景化最佳实践,整合RTC、IM、直播、美颜等多款产品,打造了音视频通话UIKit(CallKit)、互动直播UIKit(LiveStreamingKit)、语聊房UIKit(LiveAudioRoomKit)等多个场景互动SDK......
  • fullcalendar-vue3插件实现时间资源图
    用的vue3+最新版本:官网链接:https://fullcalendar.io/demos效果如图:x轴为人员,y轴为当日的时间段:  1.安装引入npminstall--save@fullcalendar/core@fullcalendar/resource@fullcalendar/resource-timegrid package.json 2.附上代码<script>import{defin......
  • TSN和DDS测试解决方案
    时间敏感网络TSN技术是基于统一的网络时间,通过调度机制管理通信数据流,最终实现确定性与可预期的以太网通信系统。时间敏感网络TSN技术旨在提升以太网网络的实时性和可靠性,并提供灵活的网络资源管理。该技术的应用主要来源于传统以太网技术在面对实时性、确定性和低延迟等严苛要求......
  • Codeforces Round 945 (Div. 2) (A - E)
    A每一轮对总分的贡献都是\(2\),如果\(p_1+p_2+p_3\)为奇数则无解。\(p_1+p_2\lep_3\),最多\(p_1+p_2\)轮。\(p_1+p_2>p_3\),可以\(1,2\)轮流将\(3\)耗完,然后互相匹配,最多\(\dfrac{p_1+p_2+p_3}{2}\)。B如何判断一个\(k_0\)是否符合条件?处......
  • python requests get请求 如何获取所有请求
    在Python中,使用requests库发送HTTPGET请求非常简单。如果你想获取所有的请求,通常意味着你想记录或跟踪这些请求。这可以通过使用requests的Session对象和自定义的HTTPAdapter来实现。以下是一个如何实现这一功能的示例代码:importrequestsfromrequests.adaptersimportHTTP......
  • 在CMakeLists.txt中添加源文件的几种方法
    单个.cpp源文件的情况用这段代码进行测试,CMake中添加一个可执行文件作为构建目标:#include<cstdio>intmain(){printf("Hello,world!\n");}指定源文件的时候可以有两种方式。在创建目标的时候直接指定源文件add_executable(mainmain.cpp)先创建目标,再添加源......
  • 基于 Spring Boot3、Vue3!这套小说系统开源了...
    大家好,我是Java陈序员。今天,给大家介绍一个基于SpringBoot3、Vue3前后端分离的小说项目,集成了主流的技术栈,可供学习使用!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍novel——一套基于SpringBoot3+Vue3开发......
  • Vue3使用vue3-puzzle-vcode进行滑动验证
    npm包地址:https://www.npmjs.com/package/vue3-puzzle-vcodenpm安装npminstallvue3-puzzle-vcode--save最简单例子:<template><Vcode:show="isShow"@success="onSuccess"@close="onClose"/><button@click="on......
  • Vue3+Yup进行数据验证
    Vue3+Yup进行数据验证npm安装:npmiyup使用import*asYupfrom"yup";//配置constlogin=Yup.object().shape({//username为string格式,必填(错误提示为:请输入用户名)username:Yup.string().required('请输入用户名').label("username"),password:Yup.s......
  • Vue3+nanoid编写字符串ID生成器
    Vue3+nanoid编写字符串ID生成器中文介绍:https://github.com/ai/nanoid/blob/HEAD/README.zh-CN.md一个小巧、安全、URL友好、唯一的JavaScript字符串ID生成器。“一个惊人的无意义的完美主义水平,这简直让人无法不敬佩。”小巧. 116字节(经过压缩和Brotli处理)。没有依......