自己写一个小工具,使用js拖拽元素时,鼠标速度过快时 元素跟不上鼠标

看网上有人说把mousemove事件绑定到dom上 试了不管用

偶然发现拖拽文字丝毫无卡顿  不知道是不是元素比较复杂的缘故?

so 换个思路 需要拖拽元素时 不直接拖拽它 创建一个新元素 画出来边框 ,可以无卡顿拖拽。 拖拽完成后拿到这个临时元素的位置,将本体放过来即可

话不多说 上代码

html

<el-button @mousedown.native="beginMove" size="mini">按钮</el-button>
<divid="innerHtml"@mousemove="moveControl"@mouseup="endMove"
></div>

JS

data() {//这里存放数据return {leftShow: true,is_move: false,tempElement: null,createElement: null};
},
methods: {/*** 开始拖拽* */beginMove(e) {this.is_move = true;//隐藏页面上其他元素this.leftShow = false;//clone一个新元素出来 此为本体this.createElement = e.target.cloneNode(true);// 创建一个临时元素this.tempElement = document.createElement("div");this.tempElement.style.position = "absolute";// 给它设置一个边框this.tempElement.style.border = "1px dashed #fc6";this.tempElement.style.width = e.target.offsetWidth + "px";this.tempElement.style.height = e.target.offsetHeight + "px";document.getElementById("innerHtml").append(this.tempElement);},/*** 拖拽过程* */moveControl(e) {if (this.is_move) {this.tempElement.style.top =e.clientY - this.tempElement.offsetHeight / 2 + "px";this.tempElement.style.left =e.clientX - this.tempElement.offsetWidth / 2 + "px";}},/*** 拖拽完成* @param e*/endMove(e) {this.is_move = false;this.leftShow = true;//设置本体的属性this.createElement.style.position = "absolute";//将临时元素的位置取到本体this.createElement.style.top = this.tempElement.style.top;this.createElement.style.left = this.tempElement.style.left;document.getElementById("innerHtml").append(this.createElement);//移除临时元素this.tempElement.remove();this.tempElement = null;}}

效果图

js 拖拽元素 鼠标速度过快问题相关推荐

  1. js 拖拽元素 鼠标速度过快元素跟不上

    自己写一个拖拽元素,使用js拖拽元素时,鼠标速度过快时 元素跟不上鼠标 参考了网上的文章 ,里面对比了绑定到 body和document上的不同点js 拖拽元素 鼠标速度过快问题 明白过来是因为速度过 ...

  2. js拖拽元素到另一个元素_js控制浏览器滚动条到制定元素

    最近在使用selenium抓取数据,但是需要使用js控制滚动条来加载数据.主要是不会js,不会直接使用js来加载数据. 这里就使用笨方法,控制滚动条滚动到制定元素来加载数据. 版本1:下拉滚动条 最开 ...

  3. js拖拽之二:实现拖动元素上下左右改变元素大小

    具体原理参考 js拖拽一 <script> var oDiv = document.getElementById("div1"); oDiv.onmousedown = ...

  4. html元素拖动互换位置原理,【详】JS实现拖拽元素互换位置

    写在前面的废话 大家好,我是练习js时长接近两年半的个人练习生--李大雷 算了,直接 鸡,你太美~ 应用场景 很多时候,我们需要让用户来自定义自己想要的菜单顺序,或者一些按钮的排序,那么这个时候,怎么 ...

  5. js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)

    系列文章目录 文章目录 系列文章目录 背景与效果图 1.背景如下(功能图): 2.效果图如下: 拖拽后的效果 缩放的效果 放大的效果 一.功能:支持鼠标长按拖拽 1.鼠标事件: 2.拖拽功能流程 3. ...

  6. sortable 拖拽时互换目标的位置_双端通用型JS拖拽插件的封装与应用

    最近工作中遇到一个需求,需要将一个元素从某位置拖动到另一固定位置后执行某一交互行为,具体效果如下: 这个看似简单的需求,然而实现起来却并不那么顺利.我首先想到的是如何通过哪个现有的插件来快速解决这个问 ...

  7. php拖拽原理,JS拖拽效果及原理解析

    这篇文章主要介绍了如何实现js拖拽效果及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 元素拖拽分成3个步骤:按下鼠标,移动鼠标,松开鼠标. ...

  8. html列表拖拽排序插件,JS拖拽排序插件Sortable.js用法实例分析

    本文实例讲述了JS拖拽排序插件Sortable.js用法.分享给大家供大家参考,具体如下: 最近由于项目功能设计的原因,需要对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好 ...

  9. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

最新文章

  1. 写给想用技术改变世界的年轻人-by 沃兹
  2. C++11:using 的各种作用
  3. linux docker漏洞,安装shadow或linux-pam的Alpine Linux Docker镜像有漏洞,附解决
  4. 使用 dynamic 类型让 ASP.NET Core 实现 HATEOAS 结构的 RESTful API
  5. MFC使用http post请求上传文件
  6. 三星官方确认:vivo将首发搭载Exynos 1080旗舰芯片
  7. Linux 查看磁盘容量、查找大文件、查找大目录
  8. 【iCore3 双核心板_FPGA】实验二十三:使用JTAG UART终端打印信息
  9. lesson3 一阶线性常微分方程解法
  10. Java中集合List,Map和Set的差别
  11. 获得Oracle中刚插入的数据的ID(for produce)
  12. HashKey TokenGazer | 去中心化身份(DID)研究报告
  13. 为何你就是那个求职困难户?
  14. BZOJ 3669 luogu 2387 魔法森林
  15. 【云原生】—— 学习云计算应用开发你需要掌握的五大技能
  16. 2908. Annoying painting tool
  17. Nvidia Jetson deepstream配置多路RTSP视频源
  18. javaweb基础打卡12
  19. 14年高考结束了,明日边缘看完了,明天周一了 (2014-06-08)
  20. linux搭建erp教程,Ubuntu 12.04+OpenERP7.0安装笔记

热门文章

  1. 皮卡堂什么维修服务器,皮卡堂充值帮助指南
  2. excel拆分工资条
  3. python虚拟环境——pipenv
  4. python 傅里叶曲线拟合
  5. 2022-2028全球与中国脚手架市场现状及未来发展趋势
  6. 为iPart表添加“重量”列
  7. pythongui界面源码_超酷 Python 程序包 ,一行代码实现 GUI 界面
  8. 2018.9.18中科38所面试
  9. 游戏数据逆向分析系列课程之封包和线程发包
  10. 第二季 明文封包教程