主页 > 采坑 > 前端采坑 > javascript常见API采坑 >
来源:未知 时间:2021-05-09 15:02 作者:小飞侠 阅读:次
[导读] js实现文档拖动以及鼠标事件 模仿PS等工具页面文档拖动, 思路: 如图所示让父级盒子设置2万宽度,并且控制他们滚动条到 2w/2 的位置。 接下来就是鼠标事件的处理了。 代码如下:...
js实现文档拖动以及鼠标事件 模仿PS等工具页面文档拖动, 思路: 如图所示让父级盒子设置2万宽度,并且控制他们滚动条到 2w/2 的位置。 接下来就是鼠标事件的处理了。 代码如下: <!DOCTYPE html> <html> <head> <title>测试页面拖拽</title> <style type="text/css" media="screen"> body{ margin: 0px; padding: 0px; } div, input, textarea, ul { resize: none; outline: 0; font-size: inherit; } .mind-container { position: relative; overflow: auto; -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Chrome/Safari/Opera */ -khtml-user-select: none; /* Konqueror */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently not supported by any browser */ } .mind-designer { position: relative; /* background-attachment: fixed !important; */ /* transition: all 200ms; */ -moz-transition: all 200ms; -o-transition: all 200ms; } </style> </head> <body> <div class="mind-container" id="mind_con" style="height: 969px;"> <div class="mind-designer" style="width: 20000px; height: 20000px; background: rgb(247, 247, 247); cursor: default;"><div class="topic-container " style="position: absolute; top: 10400px; left: 10400px;"> 元素拖动鼠标事件详解 <br> https://blog.csdn.net/Charissa2017/article/details/103863588 </div> </div> <script> window.onload = function(){ console.log('test') obj.init() } var obj = { data:{ mx:10000, my:10000, // 鼠标临时参数 md:{ x:0,y:0,direction:{ v:'',h:''} }, isDrag: false, // 是否拖动 elementA:document.querySelector("#mind_con") }, init:function(){ this.event(); this.elemnetInit(); }, elemnetInit:function(){ this.data.elementA.scrollTop = this.data.my this.data.elementA.scrollLeft = this.data.mx document.querySelector('#mind_con').style.height = window.innerHeight + 'px'; document.querySelector('.topic-container').style.top = this.data.my + document.querySelector('#mind_con').offsetHeight / 2 + 'px' document.querySelector('.topic-container').style.left = this.data.mx + document.querySelector('#mind_con').offsetWidth / 2 - document.querySelector('.topic-container').offsetWidth / 2 + 'px' }, event:function(){ obj.data.elementA.addEventListener('scroll', (e) =>{ obj.data.my = e.target.scrollTop; obj.data.mx = e.target.scrollLeft; }); obj.data.elementA.addEventListener('mousedown', (e) =>{ obj.data.isDrag = true; //开启拖动 obj.data.md.x = e.clientX; obj.data.md.y = e.clientY; }); obj.data.elementA.addEventListener('mousemove', (e) =>{ if (!obj.data.isDrag){ return } obj.data.isDrag = true; //开启拖动 var _mx = e.clientX, _my = e.clientY, _msx = _mx - obj.data.md.x, _msy = _my - obj.data.md.y; obj.data.md.direction.v = _msx > 0 ? 'left': 'right' obj.data.md.direction.h = _msy > 0 ? 'up': 'down' obj.data.mx -= _msx obj.data.my -= _msy obj.setBoxMove(); // 设置盒子移动 obj.data.md.x = _mx obj.data.md.y = _my }); obj.data.elementA.addEventListener('mouseup', (e) =>{ obj.data.isDrag = false; }); }, setBoxMove:function(){ this.data.elementA.scrollLeft = obj.data.mx this.data.elementA.scrollTop = obj.data.my } } </script> </body> </html> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com