DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript實例教程:取得HTML元素的真正位置與大小
Javascript實例教程:取得HTML元素的真正位置與大小
編輯:關於JavaScript     

使用HTML元素的style.left,style.top,style.width,style.height以及width,height屬性,都不能獲得元素的真正位置與大小,這些屬性取出來的都是原來的設置值,例如width="500",那麼通過document.getElementById(“table1″).width取出來的值永遠都是500,而不管這個表格是否已經被撐大了;同時,通過document.getElementById(“table1″).style.left獲得的值是空的,因為沒有設置這個值。

要取得HTML元素的真正位置與大小,只能通過offsetLeft,offsetTop,clientWidth,clientHeight,offsetWidth,offsetHeight屬性,其中offsetLeft與offsetTop分別是當前元素在父元素內的相對左坐標與相對頂坐標,要取得絕對坐標,還需要用到offsetParent屬性,改屬性取得當前元素的父元素。要取得絕對坐標,就必須依次獲得父元素的相對坐標,直到父元素為空,然後把所有相對坐標加起來,得到當前元素的絕對坐標。

最常見的是日期選擇框,當點擊按鈕時彈出日期選擇框總是在按鈕的旁邊,這個選擇框的坐標,就是根據按鈕的坐標以及按鈕的offsetWidth,offsetHeight來取得的。

—————————————————————————————————————————–
HTMLElement.offsetLeft
HTMLElement.offsetTop

但是需要注意的是,這兩個屬性所儲存的數值並不是該元素相對整個浏覽器畫布的絕對位置,而是相對於其父元素位置的相對位置,也就是說這兩個數值得到的是以其元素左上角為(0,0)點從而計算出的數值。那麼如何得到一個HTML元素的絕對位置呢,前一陣找到的一個比較好的函數,分享一下:

//獲取元素的縱坐標
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;
}

其原理就是利用HTMLElement.offsetParent屬性,如果當前元素的父元素不是空(null),則在原本的offsetTop基礎上加上當前的offsetTop,然後繼續獲取父元素的父元素的offsetTop,再將其加之,最終遞歸出該元素相對於整個浏覽器畫布的縱坐標。橫坐標亦然。 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved