Vue移动框鼠标拖拽自定义指令

Element-UI实现el-dialog弹框拖拽功能 在实际开发中,会发现很多系统中弹框是可以在浏览器可见区域自由拖拽的,这极大方便用户的操作。在查看Element-UI中弹框(el-dialog)组件的文档说明后,发现并未实现这一功能,不过也无须担心,vue中提供了Vue.directive钩子函数,可以从底层操作DOM来实现并升级弹框的拖拽功能。 阅读详情

在Vue中通过自定义指令,实现指定的模块带有鼠标拖拽移动效果

// 移动框自定指令
Vue.directive("drag", {
  bind: (el) => {
    let initX = null;
    let initY = null;
    el.style.cursor = "move";//设置鼠标样式为移动
    // 创建一个div作为移动选择框
    let divHtml = document.createElement('div')
    divHtml.style.cssText = "width: 90%;height: 40px;position: absolute;top: 0;left: 0;z-index: 100000;";
    el.appendChild(divHtml)
    // 获取初始点击的位置
    el.addEventListener("mousedown", function (e) {
      let curX = 0;
      let curY = 0;
      let str = el.style.transform.trim();
      if (str) {
        let reg = /\-?\d+/g;
        curX = Number(reg.exec(str));
        curY = Number(reg.exec(str));
      }
      initX = e.pageX - curX;
      initY = e.pageY - curY;
      // 鼠标移动事件设置移动位置
      document.addEventListener("mousemove", moveEle);
    });
    // 设置当前位置
    function moveEle(e) {
      el.style.transform = `translate(${e.pageX - initX}px,${e.pageY - initY}px)`;
    }
    // 鼠标松开移出方法
    document.addEventListener("mouseup", function () {
      document.removeEventListener("mousemove", moveEle);
    });
  },
  // 指令销毁
  unbind: (el) => {
    el.style.transform = "";
  },
});

使用

在new Vue之前定义该指令,使用时在模块中使用v-drag指令即可

vuejs 移动端 实现div拖拽移动 vue 移动端 实现div拖拽移动 本文讲述,在使用VUE的移动端实现类似于iPhone的悬浮窗的效果。 相关知识点 touchstart 当在屏幕上按下手指时触发 touchmove 当在屏幕上移动手指时触发 touchend 当在屏幕上抬起手指时触发 mousedown mousemove mouseup对应的是PC端的事件 touchcancel 当一些更高级别的事件发生的... 阅读详情

相关推荐

Vue+ECharts-GL 3D地图实战:5层叠加打造炫酷中国地图(附完整代码)

本文详细介绍了如何利用Vue和ECharts-GL构建具有强烈立体感的3D中国地图。通过5层图层的巧妙叠加与样式调校,实现了从背景阴影到交互高光的完整视觉层次,并整合了动态飞线与散点标记。文章提供了完整的代码实现、核心配置解析以及性能优化与视觉调优的实战技巧,帮助开发者快速打造专业级的交互式地图可视化应用。

d6e7f8g9h的博客 649

vue鼠标拖拽添加数据(小demo)

原理主要是让文本跟随鼠标移动,然后修改相应拖拽位置的数据值,主要使用mousedown和mouseup <template> <div class="flex" style="display:flex"> <div class="options"> <div v-for="(item,index) in optionsArr" :key="index" @mousedown.prevent="move(item)">{{item}}&

个人博客 697

Autosar结合simulink的汽车应用层软件开发实例

本文基于汽车应用开发案例,并结合Autosar相关知识,生成具有Autosar标准的汽车应用层开发代码,以供学习和参考。以上就是本篇内容,主要是利用Simulink创建Autosar接口并进行端口映射的方法。

m0_64899535的博客 2152

拖拽改变鼠标样式

在使用ant-design-vue的tree组件的时候,需要拖拽树的子节点到地图组件上,但是一旦超出tree的盒子范围鼠标样式会不对,是一个圆圈加/的鼠标样式,这个鼠标样式给用户传达的信息是不可拖拽,因此要改变鼠标样式 解决办法: 在装地图组件的父盒子上使用注册一个@dragover="dragover"事件,并且阻止默认行为。 相关知识点: 在drag&drop API中提供了...

qq_44704740的博客 9399

python使用TensorRT报错,多线程或多进程中使用问题

python使用TensorRT报错,Cuda Runtime问题

qq_44224801的博客 747

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常

前期使用Qt开发一个登录模块一直使用很好。最近在一台新电脑上使用时发现排版混乱。这个问题很普遍,主要原因是旧软件对高清显示器的适配不当造成的。新电脑使用的是4K屏,win10系统自动进行了175%的缩放。

cihron的博客 1万+

vue 自定义指令(鼠标拖拽滑动)

鼠标拖拽滑动

yaoyao_mengyao的博客 1603

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

vue 拖拽功能样式优化

在拖拽功能完后,进行拖拽过程中样式的优化

weixin_46073263的博客 1714

抖音 X-Gorgon 加密算法逆向与 Python 爬虫实战(2026 最新版)

抖音(TikTok 国内版)作为日活超 8 亿的超级 App,其反爬体系在国内互联网中属于顶级难度。核心签名参数X-Gorgon和X-Khronos是几乎所有业务接口(视频详情、评论、搜索、用户主页)的“通行证”。没有正确的 Gorgon 签名,服务器直接返回403或。市面上的教程大多停留在2023 年之前的 V4 版本,而抖音在 2025 年底全面升级到了V6 协议,算法结构、加密常数、混淆方式全部重构。

2201_76125261的博客 345

实时系统vxWorks - 虚拟机环境搭建

概述VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的...

不只会拍照的程序猿 7850

关于vue中鼠标拖拽元素的实现

vue directive 鼠标 拖拽

qq_40834427的博客 2496

基于OSEK_TP.dll封装通用,多ECU自由切换的诊断函数库

本文介绍了基于CANoe内置OSEK_TP.dll库实现通用诊断通讯的方法。通过封装CAN_TP.cin顶层脚本,实现了ECU连接管理、数据收发和多ECU切换功能。系统采用字典结构存储ECU参数,支持从配置文件读取诊断ID等配置信息,通过TpCreateConnection建立TP层连接。文章详细说明了诊断请求发送函数Uds_DiagSendRequest的实现逻辑,以及如何利用回调函数处理收发事件。该方法无需依赖诊断数据库,通过底层封装实现了灵活高效的诊断通讯方案,适用于车载诊断领域的测试需求。

蚂蚁小兵 1565

elelment弹框可以移动_vue项目中element弹框(MessageBox)实现可拖拽

第一步:在src目录中新建directive文件夹,然后在里面再新建一个el-drag-dialog文件夹,里面写两个js文件。也是就封装自定义指令。drag.js和index.js第二步,直接照下面的代码复制粘贴即可drag.jsexport default {bind(el, binding, vnode) {const dialogHeaderEl = el.querySelector('....

weixin_32143245的博客 727

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

directives 自定义指令

使用自定义指令完成鼠标拖拽小案例

qq_43580613的博客 528

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

vue elementui让弹框可拖拽指令

封装一个指令 //v-dialogDrag :弹框可拖拽 Vue.directive('dialogDrag', { bind(el, binding, vnode, oldVnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header'); const dragDom = el.querySelector('.el-dialog'); dialogHeaderEl.styl

weixin_43371136的博客 396

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Vue使用directive指令实现Element中Dialog等弹框组件的移动与缩放

前言 在使用ElementUI的Dialog等弹框组件中,我们一定有这样的困扰,我们的弹框无法移动,导致下面遮罩的内容不能看到,或者我们的弹框的内容显示不完整,都会影响组件的使用体验。本小节我们通过vue的directive自定义指令实现弹框的移动和缩放的功能。关于directive自定义指令的相关内容请自行参考官方文档学习。源码地址:https://gitee.com/northcangap/atp.git。话不多说,上效果。 正文 创建dialogDrag指令derective.js

厉害哥哥的博客 1320

el-dialog弹框自定义拖拽

Element Ui el-dialog弹框自定义拖拽 功能都做完了,突然发现弹框不能拖拽,然后搜集资料找到一种方式,稍加修改 在utils中创建一个js文件,贴下面代码 import Vue from 'vue' // v-dialogDrag: 弹窗拖拽 Vue.directive('dialogDrag', { bind(el) { const dialogHeaderEl = el.querySelector('.el-dialog__header') const dragDo

qq_45673932的博客 553

element弹框拖拽

element弹框拖拽,弹框拖拽

sunyyyyy1的博客 757

通过自定义指令v-dialogDrag实现拖拽移动

通过定义自定义指令 v-dialogDrag ,实现 元素(弹框)拖拽移动。

Mr.小灰狼_随笔 936

可拖拽el-dialog弹框

【代码】可拖拽el-dialog弹框。

weixin_45753447的博客 235

ElemenetUI实现el-dialog弹窗可拖动

ElemenetUI实现el-dialog弹窗可拖动

qq_48817343的博客 904

vue自定义v-drag指令实现鼠标拖拽

使用自定义指令v-drag实现鼠标拖拽功能。鼠标按下时获取获取鼠标在元素上的位置,每次移动时不断计算和设置元素左上顶点坐标位置,并且在鼠标松开时要禁用掉down的监听事件,否则会一直执行。知道了鼠标的相对位置,后续的鼠标移动,只要知道移动后的鼠标坐标,就能很容易的把当前位置元素的左上顶点坐标算出来。在组件中使用directives注册一个自定义拖拽指令v-drag,在想要拖动的元素上使用“v-drag”即可。

~~~ 3569

Vue 拖拽功能 之 自定义指令实现元素拖拽功能

拖拽功能主要操作的是真实的DOM元素以及鼠标事件,在vue中使用自定义指令最合适不过了。 当然使用组件封装起来,然后拖拽这个组件,也是可以实现相同的效果,不过我觉得这样有点大材小用,也缺乏灵活性,好处是可以传入更多的控制属性。总之,在组件与指令之间找到平衡点,自有取舍。...

前端看世界 6536

Vue 项目中使用拖拽弹框 dragdialog, 弹框拖拽缩放,拖拽排序等

在开发的时候有个需求是 对弹框进行拖拽移动,拖拽方法,对弹框内的模块进行拖拽排序移动位置 本drag-dialog是在element框架项目内进行的 技术框架:vue.js + element-ui 拖拽组件:vue-slicksort drag自定义指令 1、在项目中src中新建 directive —> drag-dialog.js 2、在main.js中引用 import './components/dialog' 3、在dialog中使用 dialog组件 代码中添...

csl125的博客 5086

Vue实现鼠标拖拽

Vue实现鼠标拖拽 要实现拖拽,必须要使用三大秘法: (pc端) 1、鼠标按下事件:onmousedown 2、鼠标移动事件:onmousemove 3、鼠标抬起事件:onmouseup 移动端拖拽: 1、当在屏幕上按下手指时触发:touchstart 2、当在屏幕上移动手指时触发:touchmove 3、当在屏幕上抬起手指时触发:touchend 4、touchcancel 当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前的touch操作,即触发 touchcancel。一

weixin_47627529的博客 1万+
上一篇: 原生JS实现文件自定义位置盖章功能并导出PDF
下一篇: Vue2源码解析实现—rollup搭建环境
龟中的程序员
博客等级 码龄7年 328粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龟中的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值