JavaScript與Div對(duì)層定位和移動(dòng)獲得坐標(biāo)的實(shí)現(xiàn)代碼
更新時(shí)間:2010年09月08日 11:28:21 作者:
JavaScript與Div對(duì)層定位和移動(dòng)獲得坐標(biāo)的實(shí)現(xiàn)代碼,需要的朋友可以參考下。
1:移動(dòng)圖層 獲得點(diǎn)的x軸y軸坐標(biāo),從而進(jìn)行絕對(duì)定位(注意:豎拉框會(huì)影響 x 軸 y 軸坐標(biāo)值)
var x,y,z,down=false,obj
function init(){
obj=event.srcElement //事件觸發(fā)對(duì)象
obj.setCapture() //設(shè)置屬于當(dāng)前對(duì)象的鼠標(biāo)捕捉
z=obj.style.zIndex //獲取對(duì)象的z軸坐標(biāo)值
//設(shè)置對(duì)象的z軸坐標(biāo)值為100,確保當(dāng)前層顯示在最前面
obj.style.zIndex=100
x=event.offsetX //獲取鼠標(biāo)指針位置相對(duì)于觸發(fā)事件的對(duì)象的X坐標(biāo)
y=event.offsetY //獲取鼠標(biāo)指針位置相對(duì)于觸發(fā)事件的對(duì)象的Y坐標(biāo)
down=true //布爾值,判斷鼠標(biāo)是否已按下,true為按下,false為未按下
}
function moveit(){
//判斷鼠標(biāo)已被按下且onmouseover和onmousedown事件發(fā)生在同一對(duì)象上
if(down&&event.srcElement==obj){
with(obj.style){
/*設(shè)置對(duì)象的X坐標(biāo)值為文檔在X軸方向上的滾動(dòng)距離加上當(dāng)前鼠標(biāo)指針相當(dāng)于文檔對(duì)象的X坐標(biāo)值減鼠標(biāo)按下時(shí)指針位置相對(duì)于觸發(fā)事件的對(duì)象的X坐標(biāo)*/
// posLeft=event.x-x;
posLeft=document.body.scrollLeft+event.x-x;
/*設(shè)置對(duì)象的Y坐標(biāo)值為文檔在Y軸方向上的滾動(dòng)距離加上當(dāng)前鼠標(biāo)指針相當(dāng)于文檔對(duì)象的Y坐標(biāo)值減鼠標(biāo)按下時(shí)指針位置相對(duì)于觸發(fā)事件的對(duì)象的Y坐標(biāo)*/
// 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事件觸發(fā)時(shí)說明鼠標(biāo)已經(jīng)松開,所以設(shè)置down變量值為false
down=false
obj.style.zIndex=z //還原對(duì)象的Z軸坐標(biāo)值
obj.releaseCapture() //釋放當(dāng)前對(duì)象的鼠標(biāo)捕捉
//alert("X:"+obj.style.left+";Y:"+obj.style.top);
}
2:為了使圖層在不同分辨率瀏覽器上顯示同樣的效果,我們需要對(duì)圖層定位設(shè)置
第一步:對(duì)最外層 進(jìn)行相對(duì)定位
<div id="t" style="position:relative;top:0px;left:0px;"> </div>
第二步:在相對(duì)里面進(jìn)行決對(duì)定位(這樣圖層就不會(huì)隨著分辨率的改變而變形)
<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>
//===================(層移動(dòng)方法調(diào)用)=============================
<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>
復(fù)制代碼 代碼如下:
var x,y,z,down=false,obj
function init(){
obj=event.srcElement //事件觸發(fā)對(duì)象
obj.setCapture() //設(shè)置屬于當(dāng)前對(duì)象的鼠標(biāo)捕捉
z=obj.style.zIndex //獲取對(duì)象的z軸坐標(biāo)值
//設(shè)置對(duì)象的z軸坐標(biāo)值為100,確保當(dāng)前層顯示在最前面
obj.style.zIndex=100
x=event.offsetX //獲取鼠標(biāo)指針位置相對(duì)于觸發(fā)事件的對(duì)象的X坐標(biāo)
y=event.offsetY //獲取鼠標(biāo)指針位置相對(duì)于觸發(fā)事件的對(duì)象的Y坐標(biāo)
down=true //布爾值,判斷鼠標(biāo)是否已按下,true為按下,false為未按下
}
function moveit(){
//判斷鼠標(biāo)已被按下且onmouseover和onmousedown事件發(fā)生在同一對(duì)象上
if(down&&event.srcElement==obj){
with(obj.style){
/*設(shè)置對(duì)象的X坐標(biāo)值為文檔在X軸方向上的滾動(dòng)距離加上當(dāng)前鼠標(biāo)指針相當(dāng)于文檔對(duì)象的X坐標(biāo)值減鼠標(biāo)按下時(shí)指針位置相對(duì)于觸發(fā)事件的對(duì)象的X坐標(biāo)*/
// posLeft=event.x-x;
posLeft=document.body.scrollLeft+event.x-x;
/*設(shè)置對(duì)象的Y坐標(biāo)值為文檔在Y軸方向上的滾動(dòng)距離加上當(dāng)前鼠標(biāo)指針相當(dāng)于文檔對(duì)象的Y坐標(biāo)值減鼠標(biāo)按下時(shí)指針位置相對(duì)于觸發(fā)事件的對(duì)象的Y坐標(biāo)*/
// 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事件觸發(fā)時(shí)說明鼠標(biāo)已經(jīng)松開,所以設(shè)置down變量值為false
down=false
obj.style.zIndex=z //還原對(duì)象的Z軸坐標(biāo)值
obj.releaseCapture() //釋放當(dāng)前對(duì)象的鼠標(biāo)捕捉
//alert("X:"+obj.style.left+";Y:"+obj.style.top);
}
2:為了使圖層在不同分辨率瀏覽器上顯示同樣的效果,我們需要對(duì)圖層定位設(shè)置
第一步:對(duì)最外層 進(jìn)行相對(duì)定位
復(fù)制代碼 代碼如下:
<div id="t" style="position:relative;top:0px;left:0px;"> </div>
第二步:在相對(duì)里面進(jìn)行決對(duì)定位(這樣圖層就不會(huì)隨著分辨率的改變而變形)
復(fù)制代碼 代碼如下:
<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>
//===================(層移動(dòng)方法調(diào)用)=============================
復(fù)制代碼 代碼如下:
<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>
您可能感興趣的文章:
- js實(shí)現(xiàn)鍵盤控制DIV移動(dòng)的方法
- js+html+css實(shí)現(xiàn)鼠標(biāo)移動(dòng)div實(shí)例
- 利用javascript移動(dòng)div層-javascript 拖動(dòng)層
- javascript DIV實(shí)現(xiàn)跟隨鼠標(biāo)移動(dòng)
- JS onmousemove鼠標(biāo)移動(dòng)坐標(biāo)接龍DIV效果實(shí)例
- javascript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊頁(yè)面 移動(dòng)DIV
- js拖動(dòng)div 當(dāng)鼠標(biāo)移動(dòng)時(shí)整個(gè)div也相應(yīng)的移動(dòng)
- js實(shí)現(xiàn)鍵盤操作實(shí)現(xiàn)div的移動(dòng)或改變的原理及代碼
- javascript實(shí)現(xiàn)點(diǎn)擊按鈕讓DIV層彈性移動(dòng)的方法
- JavaScript利用鍵盤碼控制div移動(dòng)
相關(guān)文章
Jquery+javascript實(shí)現(xiàn)支付網(wǎng)頁(yè)數(shù)字鍵盤
這篇文章主要為大家詳細(xì)介紹了Jquery+javascript實(shí)現(xiàn)支付網(wǎng)頁(yè)數(shù)字鍵盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
JavaScript中運(yùn)算符規(guī)則和隱式類型轉(zhuǎn)換示例詳解
JavaScript中運(yùn)算符規(guī)則的隱式類型轉(zhuǎn)換是什么? 這是每個(gè)學(xué)習(xí)Javascript的新手們都應(yīng)該知道的一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于JavaScript中運(yùn)算符規(guī)則和隱式類型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
基于JavaScript實(shí)現(xiàn)的折半查找算法示例
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)的折半查找算法,結(jié)合實(shí)例形式分析了折半查找的原理、操作步驟及javascript實(shí)現(xiàn)折半查找的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-04-04
uniapp改變底部安全區(qū)頂部手機(jī)信號(hào)時(shí)間電池欄顏色樣式
這篇文章主要為大家介紹了uniapp改變底部安全區(qū)頂部手機(jī)信號(hào)時(shí)間電池欄顏色樣式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
JS實(shí)現(xiàn)字符串轉(zhuǎn)日期并比較大小實(shí)例分析
這篇文章主要介紹了JS實(shí)現(xiàn)字符串轉(zhuǎn)日期并比較大小的方法,以實(shí)例形式較為詳細(xì)分析了JavaScript字符串與日期操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
javascript實(shí)現(xiàn)查找數(shù)組中最大值方法匯總
本文給大家匯總了一下使用javascript實(shí)現(xiàn)查找數(shù)組中最大最小值的一些方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以來參考下。2016-02-02
javascript的trim,ltrim,rtrim自定義函數(shù)
今天用到j(luò)avascript去掉一個(gè)文本框中字符串兩端的空格,開始還以為有trim,ltrim,rtrim函數(shù)(asp中有這三個(gè)函數(shù),弄混了),結(jié)果找半天,沒有找到。最后找到用正則實(shí)現(xiàn)這樣功能的自定義函數(shù)。2008-09-09
解決layui 三級(jí)聯(lián)動(dòng)下拉框更新時(shí)回顯的問題
今天小編就為大家分享一篇解決layui 三級(jí)聯(lián)動(dòng)下拉框更新時(shí)回顯的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09

