dabuwawa
2016-08-25 15:30
window.onload=function(){
var dialogInstace;
//获取元素对象
function g(id){return document.getElementById(id);}
//让登录框水平居中
function center(el){
var clientW = document.documentElement.clientWidth; //获取浏览器的可视宽度
var clientH = document.documentElement.clientHeight; //获取浏览器的可视高度
var elW = el.offsetWidth; //获取元素的可见宽度
var elH = el.offsetHeight; //获取元素的可见高度
el.style.left = (clientW-elW)/2+"px"; //浏览器的屏幕可视宽度-元素可见宽度,除以2.把结果值赋给元素的左边距离。注:元素相对body绝对定位。
el.style.top = (clientH-elH)/2+"px";
}
//实例drag函数
function drag(dragId,moveId){ //dragId 允许拖拽的元素,moveId 拖拽过程中移动的元素
var instace = {};//实例化一个instace对象
instace.dragElement=g(dragId);//允许执行拖拽操作的对象
instace.moveElement=g(moveId); // 拖拽时移动的元素
instace.mouseOffsetLeft=0; //拖拽时移动的坐标初始值为0;
instace.mouseOffsetTop=0;
instace.dragElement.addEventListener("mousedown",function(e){ //给拖拽元素加鼠标监听事件,mousedown
var e=e || window.event; //兼容取得事件对象
dialogInstace = instace; //???
instace.mouseOffsetLeft=e.pageX-instace.moveElement.offsetWidth; //点击位置相对整个页面的坐标x-移动元素点击位置的宽
instace.mouseOffsetTop=e.pageY-instace.moveElement.offsetHeight;
})
return instace;
}
//鼠标弹起事件
document.onmouseup=function(e){
dialogInstace=false;
}
//鼠标移动事件
document.onmousemove=function(e){
var e=e || window.event;
var instace = dialogInstace;
if(instace){
var maxX=document.documentElement.clientWidth-instace.moveElement.offsetWidth; //x最大的位置,即在屏幕最右边的时候
var maxY=document.documentElement.clientHeight-instace.moveElement.offsetHeight;//y最大的位置,即在屏幕最下边的时候
instace.moveElement.style.left=Math.min(Math.max((e.pageX-instace.mouseOffsetLeft),0),maxX)+"px";//当移动元素超过屏幕区域最右边时,取右边最大的位置
instace.moveElement.style.top= Math.min(Math.max((e.pageY-instace.mouseOffsetTop),0),maxY)+"px";//当移动元素超过屏幕区域最下边时,取下边最远的位置
}
}
drag("dragtitle","dragbox");//执行拖拽
function showDragon(){
g("dragbox").style.display="block";
g("mask").style.display="block";
center(g("dragbox"));
};
// 侦听浏览器窗口大小变化
window.onresize = showDragon;
}
还没有人回答问题,可以看看其他问题
鼠标拖拽效果
25993 学习 · 142 问题
相似问题