vue实现拖拽的简单案例 不超出可视区域


Posted in Javascript onJuly 25, 2019

本文实例为大家分享了vue实现拖拽x效果的具体代码,供大家参考,具体内容如下

实现拖拽之前,先了解几个小常识:

这两种获取鼠标坐标的方法,区别在于基于的对象不同:

  • pageX和pageY获取的是鼠标指针距离文档(HTML)的左上角距离,不会随着滚动条滚动而改变;
  • clientX和clientY获取的是鼠标指针距离可视窗口(不包括上面的地址栏和滑动条)的距离,会随着滚动条滚动而改变;

1.clientX : 是用来获取鼠标点击的位置距离 当前窗口 左边的距离
2.clientY: 是用来获取鼠标点击的位置距离 当前窗口 上边的距离
3.offsetWidth: 用来获取当前拖拽元素 自身的宽度
4.offsetHeight:用来获取当前拖拽元素 自身的高度 
5.document.documentElement.clientHeight :屏幕的可视高度
6.document.documentElement.clientWidth:屏幕的可视高度

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>vue实现拖拽</title>
 <script src="./js/vue.min.js"></script>
 </head>
 <style>
 *{margin: 0;padding:0;}
  #app{
   position: relative;  /*定位*/
   top: 10px;
   left: 10px;
   width: 80px;
   height: 80px;
   background: #666;  /*设置一下背景*/
  }
 </style>
 <body>
 <div id="app" @mousedown="move">
 {{positionX}}
 {{positionY}}
 </div>
 </body>
<script>
 var vm = new Vue({
 el: "#app",
 data: {
 positionX: 0,
 positionY: 0
 },
 methods: {
 move(e){
 let odiv = e.target;// 获取目标元素
 
 //计算出鼠标相对点击元素的位置,e.clientX获取的是鼠标的位置,OffsetLeft是元素相对于外层元素的位置
 let x = e.clientX - odiv.offsetLeft;
 let y = e.clientY - odiv.offsetTop;
 console.log(odiv.offsetLeft,odiv.offsetTop)
 document.onmousemove = (e) => {
  // 获取拖拽元素的位置
  let left = e.clientX - x;
  let top = e.clientY - y;
  this.positionX = left;
  this.positionY = top;
  //console.log(document.documentElement.clientHeight,odiv.offsetHeight)
  // 把拖拽元素 放到 当前的位置
  if (left <= 0) {
  left = 0;
  } else if (left >= document.documentElement.clientWidth - odiv.offsetWidth){
  //document.documentElement.clientWidth 屏幕的可视宽度
  left = document.documentElement.clientWidth - odiv.offsetWidth;
  }
  
  if (top <= 0) {
  top = 0;
  } else if (top >= document.documentElement.clientHeight - odiv.offsetHeight){
  // document.documentElement.clientHeight 屏幕的可视高度
  top = document.documentElement.clientHeight - odiv.offsetHeight
  
  }
  odiv.style.left = left + "px";
  odiv.style.top = top + "px"
  
 }
    // 为了防止 火狐浏览器 拖拽阴影问题
 document.onmouseup = (e) => {
  document.onmousemove = null;
    document.onmouseup = null
 }
 }
 }
 })
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 按钮点击触发(兼容IE、火狐)
Aug 07 Javascript
json数据与字符串的相互转化示例
Sep 18 Javascript
JavaScript的事件绑定(方便不支持js的时候)
Oct 01 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
jquery实现动态改变div宽度和高度
May 08 Javascript
JavaScript实现的简单烟花特效代码
Oct 20 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
React Native中TabBarIOS的简单使用方法示例
Oct 13 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
Dec 12 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
Mar 26 Javascript
vue实现一拉到底的滑动验证
Jul 25 #Javascript
微信小程序实现图片选择并预览功能
Jul 25 #Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 #Javascript
微信小程序绘制图片发送朋友圈
Jul 25 #Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 #Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 #Javascript
JS查找孩子节点简单示例
Jul 25 #Javascript
You might like
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
显示、隐藏密码
2006/07/01 Javascript
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
python批量解压zip文件的方法
2019/08/20 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
文史专业毕业生自荐信
2013/11/17 职场文书
团员个人的自我评价
2013/12/02 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
刊首寄语大全
2014/04/11 职场文书
上课不认真检讨书
2014/09/17 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
病假条格式范文
2015/08/17 职场文书
环保建议书作文400字
2015/09/14 职场文书
公司新员工欢迎词
2015/09/30 职场文书