在做公司项目的时候,有个需求,某个元素能在页面可视范围内随意拖动,可折叠展开的,而且不卡顿,根据页面中心线的位置让当前可拖动元素里面的内容在展开的时候,保证内容能看全。
先说拖动,思路就是利用jquery的mousemove,mousedown,mouseup三个事件,定义两个相对位置。代码如下:
oDiv.onmousedown = function (ev) {
var ev = ev || event;
var disX = ev.clientX - this.offsetLeft;
var disY = ev.clientY - this.offsetTop;
if (oDiv.setCapture) {
oDiv.setCapture();
}
document.onmousemove = function (ev) {
var ev = ev || event;
var L = ev.clientX - disX; //拖动元素左侧的位置=当前鼠标距离浏览器左侧的距离 - (物体宽度的一半)
var T = ev.clientY - disY; //拖动元素顶部的位置=当前鼠标距离浏览器顶部的距离 - (物体高度的一半)
if (L < 0) { //如果左侧的距离小于0,就让距离等于0.不能超出屏幕左侧。如果需要磁性吸附,把0改为100或者想要的数字即可
L = 0;