码迷,mamicode.com
首页 > Web开发 > 详细

原生js实现拖拽效果

时间:2019-09-02 09:38:22      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:loaded   idt   fse   继承构造函数   cli   客户   浏览器   使用   div   

css样式布局:

技术图片

html部分:

技术图片

js主体部分:

技术图片

接下来用混合继承实现box2移动时有边界的效果:

 

技术图片

思路:1.实现拖拽效果主要有三个事件,当鼠标按下的时候,获取鼠标相对于事件发生元素的位置(offsetX/offsetY);当鼠标移动的时候,利用鼠标指针相对于浏览器页面(或客户区)的坐标(clientX/clientY),得到元素的left和top值(clientX/clientY-offsetX/offsetY);当鼠标抬起的时候清除移动效果。

2.事件处理函数会使this指向触发事件的元素,使用bind改变this的指向(指向实例),会返回一个新函数,提前将移动和抬起事件的this改变保存在一个变量中,让移除的和调用的是同一个函数。

3.一个box有边界,一个box没有边界,就需要子元素继承父元素,然后修改子元素的move事件,这里用的是混合继承的方法,使用改变this指向的方法继承构造函数中的内容,使用原型继承来继承原型对象的内容。

4.边界值设定:不小于0;不大于可视宽度与元素本身宽度的差值。document.documentElement.clientWidth 为可视区域的宽度。

原生js实现拖拽效果

标签:loaded   idt   fse   继承构造函数   cli   客户   浏览器   使用   div   

原文地址:https://www.cnblogs.com/wshj120828/p/11444551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!