资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

使用js实现限定范围拖拽的方法-创新互联

今天就跟大家聊聊有关使用js实现限定范围拖拽的方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

10年的临清网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整临清建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“临清网站设计”,“临清网站推广”以来,每个客户项目都认真落实执行。

代码实例

* {
 padding: 0;
 margin: 0;
}
#box1 {
 width: 500px;
 height: 500px;
 background: #999;
 position: relative;
 left: 100px;
 top: 100px;
}
#box {
 width: 100px;
 height: 100px;
 background: #334;
 position: absolute;
 cursor: move;
}

(function () { var dragging = false var boxX, boxY, mouseX, mouseY, offsetX, offsetY var box = document.getElementById('box') var box1 = document.getElementById('box1') // 鼠标按下的动作 box.onmousedown = down // 鼠标的移动动作 document.onmousemove = move // 释放鼠标的动作 document.onmouseup = up // 鼠标按下后的函数,e为事件对象 function down(e) { dragging = true // 获取元素所在的坐标 boxX = box.offsetLeft boxY = box.offsetTop // 获取鼠标所在的坐标 mouseX = parseInt(getMouseXY(e).x) mouseY = parseInt(getMouseXY(e).y) // 鼠标相对元素左和上边缘的坐标 offsetX = mouseX - boxX offsetY = mouseY - boxY } // 鼠标移动调用的函数 function move(e){ if (dragging) { // 获取移动后的元素的坐标 var x = getMouseXY(e).x - offsetX var y = getMouseXY(e).y - offsetY // 计算可移动位置的大小, 保证元素不会超过可移动范围 // 此处就是父元素的宽度减去子元素宽度 var width = box1.clientWidth - box.offsetWidth var height = box1.clientHeight - box.offsetHeight // min方法保证不会超过右边界,max保证不会超过左边界 x = Math.min(Math.max(0, x), width) y = Math.min(Math.max(0, y), height) // 给元素及时定位 box.style.left = x + 'px' box.style.top = y + 'px' } } // 释放鼠标的函数 function up(e){ dragging = false } // 函数用于获取鼠标的位置 function getMouseXY(e){ var x = 0, y = 0 e = e || window.event if (e.pageX) { x = e.pageX y = e.pageY } else { x = e.clientX + document.body.scrollLeft - document.body.clientLeft y = e.clientY + document.body.scrollTop - document.body.clientTop } return { x: x, y: y } } })()

网页标题:使用js实现限定范围拖拽的方法-创新互联
分享网址:http://cdkjz.cn/article/dsjegs.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220