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

