Posted in Javascript onSeptember 08, 2010
1:移动图层 获得点的x轴y轴坐标,从而进行绝对定位(注意:竖拉框会影响 x 轴 y 轴坐标值)
var x,y,z,down=false,obj function init(){ obj=event.srcElement //事件触发对象 obj.setCapture() //设置属于当前对象的鼠标捕捉 z=obj.style.zIndex //获取对象的z轴坐标值 //设置对象的z轴坐标值为100,确保当前层显示在最前面 obj.style.zIndex=100 x=event.offsetX //获取鼠标指针位置相对于触发事件的对象的X坐标 y=event.offsetY //获取鼠标指针位置相对于触发事件的对象的Y坐标 down=true //布尔值,判断鼠标是否已按下,true为按下,false为未按下 } function moveit(){ //判断鼠标已被按下且onmouseover和onmousedown事件发生在同一对象上 if(down&&event.srcElement==obj){ with(obj.style){ /*设置对象的X坐标值为文档在X轴方向上的滚动距离加上当前鼠标指针相当于文档对象的X坐标值减鼠标按下时指针位置相对于触发事件的对象的X坐标*/ // posLeft=event.x-x; posLeft=document.body.scrollLeft+event.x-x; /*设置对象的Y坐标值为文档在Y轴方向上的滚动距离加上当前鼠标指针相当于文档对象的Y坐标值减鼠标按下时指针位置相对于触发事件的对象的Y坐标*/ // posTop=event.y-y; posTop=document.body.scrollTop+event.y-y; window.status="posLeft="+posLeft+",posTop="+posTop; window.status=window.status+"clientX="+event.clientX+"clientY="+event.clientY+"scrollLeft="+document.body.scrollLeft+"scrollTop="+document.body.scrollTop+",event.y="+event.y+",event.x"+event.x; } } } function stopdrag(){ //onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false down=false obj.style.zIndex=z //还原对象的Z轴坐标值 obj.releaseCapture() //释放当前对象的鼠标捕捉 //alert("X:"+obj.style.left+";Y:"+obj.style.top); }
2:为了使图层在不同分辨率浏览器上显示同样的效果,我们需要对图层定位设置
第一步:对最外层 进行相对定位
<div id="t" style="position:relative;top:0px;left:0px;"> </div>
第二步:在相对里面进行决对定位(这样图层就不会随着分辨率的改变而变形)
<div id="t" style="position:relative;top:0px;left:0px;"> <div id="tt" style="position:absolute;top:9px;left:317px;"> <IMG id="hong" SRC="main/1.jpg" WIDTH="8" HEIGHT="8" BORDER="0" ALT="" /> </div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div> <div >省略</div>
//===================(层移动方法调用)=============================
<div onmousedown=init() onmousemove=moveit() onmouseup=stopdrag() style="position:absolute;left:60;top:190;width:5;height:5;z-index:99;;border:1px solid #000000;"> D </div> </div>
JavaScript与Div对层定位和移动获得坐标的实现代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@