vue拖拽指令之offsetX、clientX、pageX、screenX
自己一直很想做个拖拽生成静态页面的东西,说简单也简单,这个东西按道理用jsx语法是最好的,用render方法渲染生成的json。只是自己对这块还是没信心。今天写个vue的拖拽指令,顺便理一下offsetX、pageX、clientX、screenX这几个属性,一直记不住。
先大概记一下这几个的翻译(应该是正确的):
offset:偏移;client:客户;page:页面;screen:屏幕;
offsetX:相对于触发元素的偏移距离;
clientX:相对于客户端浏览器的距离,可以理解成相对于地址栏以下的区域;
pageX:相对于整个页面的距离,比clientX要加上滚动条移动的距离;
screenX:相对于整个屏幕的距离,包含地址栏;
搞明白了这几个相对的距离,就比较容易计算拖拽的距离了。很早之前就分享过拖拽的一个简单demo,拖拽指令也很简单:
Vue.directive('draggable', {inserted: function (el,data) {el.style.position = 'absolute';el.style.cursor = 'move';el.onmousedown = function(event){let startX = event.clientX;let startY = event.clientY;let left = el.offsetLeft;let top = el.offsetTop;document.onmousemove = function(event){let X = event.clientX - startXlet Y = event.clientY - startY;el.style.left = `${X + left}px`;el.style.top = `${Y + top}px`;}document.onmouseup = function(){document.onmousemove = document.onmouseup = null;};}}
})
这边只需要注意把监听元素绑定在document上,另外就是鼠标抬起的时候就移除监听。使用的时候:
这是最基础版的,不同需求可能会有不一样的条件,比如移动的距离是否可以小于0,或者限制在某个相对定位relative框里面,这时候是否限制最大最小的移动距离,可以通过传参还是传递元素之类的方法去实现。
vue拖拽指令之offsetX、clientX、pageX、screenX相关推荐
- Js event对象offsetX, clientX, pageX, screenX, layerX, x区别(图解)
简介 因为实际开发中,很少用到event对象的这几个值,每当写的时候又记不清,然后就要浪费时间去查找准确的资料,很是不爽,所以就做个记录~话不多说,直接上图(ps:图是网上找的,如果侵权,可立马删除) ...
- event对象的offsetX, clientX, pageX, screenX
现在需要对event对象的几大与坐标有关的属性做一个总结,以便于认识 offsetX|offsetY offsetX/Y获取到是触发点相对被触发dom的左上角距离(包括padding在内,不包括bor ...
- 图解Js event对象offsetX, clientX, pageX, screenX, layerX, x区别
通过 3 张图和 1 张表格,轻松区别 Javascript Event 对象中的offsetX, clientX, pageX, screenX, layerX, x等属性. 一.测试代码如下: & ...
- html5 offsetx,event对象中offsetX,clientX,pageX,screenX的区别
1.offsetX offset意为偏移量,是事件对象距左上角为参考原点的距离.以元素盒子模型的内容区域的左上角为参考点.不包括border. 2.clientX 事件对象相对于浏览器窗口可视区域的X ...
- 一张图看懂offsetX, clientX, pageX, screenX的区别
1.具体含义见下图1 2.浏览器的兼任情况 更多专业前端知识,请上 [猿2048]www.mk2048.com
- vue实现PS效果,鼠标拖拽指令、十字辅助线、鼠标选点、打印页面指定内容、生成随机id、颜色选择器、div上输入文字(类似QQ截图输入文字)、vue图片上传转base64...
因为涵盖的小细节比较多,所以代码比较长,建议大家复制运行来进行对应功能查看,我在代码中添加了大量的注释,以供大家阅读代码 最终效果 部分细节 1.鼠标选点时可能会超出底图位置 2.图片的backgro ...
- vue的移动app项目中,自定义拖拽指令的问题
使用vue的都知道vue有一个自定义指令,我比较喜欢的就是拖拽的自定义指令,感觉挺方便的! //组件内的拖拽指令 directives: {//组建内自定义指令drag: {// 指令的定义bind: ...
- 基于Vue实现拖拽效果以及解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突
本人在开发中遇到实现一个基于vue的悬浮框拖动效果,经过努力研究最终实现了功能,一下是我的方法和部分代码,希望对您有所帮助,如有不对的地方还请指出.谢谢!下面步入正题: 首先展示一下功能的效果图: 要 ...
- 解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突
功能描述: 如图,右侧悬浮菜单按钮,只支持上下方向拖动,点击时展开或关闭菜单. BUG说明: 鼠标上下方向拖拽,如果松开时鼠标位于悬浮按钮上会默认执行click事件,经验证,click事件与mouse ...
最新文章
- android java包_android SDk中常用的java包介绍
- ngin配置301重定向设置方法和nginx子目录301重定向
- 图形结构:安排课程,图的遍历策略
- Android混流技术,基于Android的实时语音混沌保密技术的实现
- 经典好文!java继承父类注解
- navicat如何导入sql文件和导出sql文件
- Linux 信息的各种查询(系统发行版本、内核版本、系统位数)
- Web API 路由 [二] Attribute Routing
- FreeBSD从源码升级系统--重新编译
- Windows蓝屏分析器WinDbg使用方法
- 使用nginx配置二级域名
- 一段比较巧妙的sql
- 队列的图文介绍及C/C++的实现实例(转自http://www.cnblogs.com/skywang12345/p/3562279.html)
- 『机器学习』入门教程汇总
- 中文分词与去除停用词
- EasyExcel合并相同内容单元格及动态标题功能的实现
- Verilog --状态机编码方式
- cygwin完全安装步骤方法(组图)
- 【基础篇】————21、隐匿攻击之Web Interface
- 携手亚马逊云科技帆软,淄博热力开启传统企业数字化转型新征程。
热门文章
- 老子哲学与太极拳技击
- 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...
- html+js将文本和图片保存(下载)到本地技术
- 工业动画制作过程介绍(一)——静态简笔图画的制作
- 原理图端口符号_200 一步步开始学习制作PCBamp;PCBA--绘制原理图
- 如何给PDF文件添加水印?PDF免费添加水印教程来了
- 水产品进口手续及报关清关注意事项2021-08-27
- html制作多媒体课件,多媒体课件设计与制作 教师课件制作平台
- 2019 TIP之ReID:Learning Modality-Specific Representations for Visible-Infrared Person Re-Identificati
- 在PS中如何旋转箭头