javascript獲取窗口位置、絕對位置、事件位置等


有段時間沒更新博客了,工作實在太忙了,加班加班再加班就是我們這個行業的常態吧、、、還好最近把工作進度完成了,終於有些空余時間了。關於《Javascript高級程序設計》系列,我並沒有棄坑,只不過最近在把這本書讀第二遍,主要針對一些第一遍沒看懂的部分,完成之后我會繼續更新的。

這篇文字主要一下三方面內容:

一、javascript獲取事件位置

二、Javascript獲取dom對象位置

三、Javascript獲取絕對坐標

四、瀏覽器相對桌面位置

 

一、javascript獲取事件位置

首先上圖,這個圖片是我在網上找到的,感覺做的比較好!

事件的位置主要涉及clientX,clientY,screenX,screenY,offsetX,offsetY 。

1.1 offsetX,offsetY

鼠標相對於事件源元素(srcElement)的X,Y坐標。

1.2 event.screenX、event.screenY

鼠標相對於用戶顯示器屏幕左上角的X,Y坐標。標准事件和IE事件都定義了這2個屬性

1.3 event.clientX、event.clientY

鼠標相對於瀏覽器窗口可視區域的X,Y坐標(窗口坐標),可視區域不包括工具欄和滾動條。標准事件和IE事件都定義了這2個屬性。

二、Javascript獲取dom對象位置

關於clientWidth offsetWidth scrollWidth 等的含義

offsetWidth(width+padding+border)

當前對象的寬度。

style.width也是當前對象的寬度(width+padding+border)。

區別:

1)style.width返回值除了數字外還帶有單位px;

2)如對象的寬度設定值為百分比寬度,則無論頁面變大還是變小,style.width都返回此百分比,而offsetWidth則返回在不同頁面中對象的寬度值而不是百分比值

3)如果沒有給 HTML 元素指定過 width樣式,則 style.width 返回的是空字符串

offsetHeight :(Height+padding+border)

當前對象的高度。

style.height也是當前對象的高度(height+padding+border)。

區別:

1)style.height返回值除了數字外還帶有單位px;

2)如對象的高度設定值為百分比高度,則無論頁面變高還是變矮,style.height都返回此百分比,而offsetHeight則返回在不同頁面中對象的高度值而不是百分比值;

3)如果沒有給 HTML 元素指定過 height樣式,則 style.height返回的是空字符串;

clientWidth: 獲取對象可見內容的寬度,不包括滾動條,不包括邊框;

clientHeight: 獲取對象可見內容的高度,不包括滾動條,不包括邊框;

三、Javascript獲取絕對坐標

直接獲取頁面元素絕對位置的js函數

var p = $("#DoSum");
        var offset = p.offset();
        alert(offset.left);
        alert(offset.top);
//獲取元素的縱坐標
function getTop(e){
 var offset=e.offsetTop;
 if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
 return offset;
 }
 //獲取元素的橫坐標
function getLeft(e){
 var offset=e.offsetLeft;
 if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
 return offset;
 }

還有getBoundingClientRect(),這個也可以獲得絕對坐標

x=oRect.left   

y=oRect.top  

四、瀏覽器相對桌面位置

 

clientWidth是對象看到的寬度(不含邊線,即border)

scrollWidth是對象實際內容的寬度(若無padding,那就是邊框之間距離,如有padding,就是左padding和右padding之間距離)。

offsetWidth是指對象自身的寬度,整型,單位像素(含邊線,如滾動條的占用的寬,值會隨着內容的輸入而不斷改變)。

clientWidth: 獲取對象可見內容的寬度,不包括滾動條,不包括邊框;

clientHeight: 獲取對象可見內容的高度,不包括滾動條,不包括邊框;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM