vue项目实现鼠标拖拽功能

这篇具有很好参考价值的文章主要介绍了vue项目实现鼠标拖拽功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<div
    id="back"
    @mousedown="draggableFun($event)"
 ></div>
//e.clientX和e.clientY 相对于浏览器可视区的位置
//元素.offsetLeft\ 元素.offsetTop  获取元素、节点位置 参照已定位的祖先元素的位置,
//当所有祖先都未定位则参照 body 元素
//原理:鼠标移动前后相对于浏览器可视区的位置的差值+元素相对于已定位的祖先元素的位置

// 鼠标拖拽事件
const draggableFun = (val) => {
  let div = document.getElementById("back");
  let dragFlag = false;
  let x, y;

  div.onmousedown = function (e) {
    dragFlag = true;
    e = e || window.event;
    // 获取鼠标在元素上的位置(鼠标按下时在元素上得位置)
    x = e.clientX - div.offsetLeft;
    y = e.clientY - div.offsetTop;
    
  };

  div.onmousemove = function (e) {
    if (dragFlag) {
      e = e || window.event;
      div.style.left = e.clientX - x + "px";
      div.style.top = e.clientY - y + "px";
    }
  };
  // 鼠标抬起事件
  div.onmouseup = function (e) {
    dragFlag = false;
  };
};
当鼠标按下鼠标移动的时候,记录移动中的 x、y 值,那么这个被拖拽的 dom 的 top 和
left 值就是:
top=鼠标按下时记录的 dom 的 top 值+(移动中的 y 值 - 鼠标按下时的 y 值)
left=鼠标按下时记录的 dom 的 left 值+(移动中的 x 值 - 鼠标按下时的 x 值)

vue项目实现鼠标拖拽功能

 文章来源地址https://www.toymoban.com/news/detail-515465.html

到了这里,关于vue项目实现鼠标拖拽功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包