1. 程式人生 > >javascript--文件和元素幾何圖形滾動

javascript--文件和元素幾何圖形滾動

15.8.1文件座標和視口座標

元素的位置:向右表示x軸增加,向下表示y軸增加

文件座標:相對於整個文件,在使用者移動滾動條時座標不改變

視口座標:相對於視窗

獲取滾動條位置:

1)window物件的pageXOffset和pageYOffset(除ie8以及以下版本)

2)通過

2.1)在標準模式下document.documentElement的scrollLeft和scrollTop

2.2)在怪異模式下通過docoment.body的scrollLeft和scrollTop

查詢視窗尺寸

1)window的innerWidth以及innerHeight

2)通過

2.1)在標準模式下document.documentElement的clientWidth和clientHeight

2.2)在怪異模式下通過docoment.body的clientWidth和clientHeight

15.8.2查詢元素幾何尺寸

getBoundingClientRect()不需要任何引數,返回left right top bottom屬性物件(left,top即左上角x,y座標;right,bottom表示右下角x,y座標)

這個函式返回的座標包括邊框和內邊距

getClientRects():返回只讀類陣列物件

區別:   

例如:一些被斷成兩行的斜體文字成以上形狀

內聯元素上呼叫getBoundingClientRect()時會返回兩行寬度

而呼叫getClientRects會返回每一個矩形物件

解釋:內聯元素(行內元素)與塊狀元素

內聯元素包括:<span><code><b>

塊狀元素包括:<div>,圖片,段落

並且以上兩種方法並不會實時更新,如果滾動條改變或者視窗大小改變,其值不會改變,他們只是呼叫時文件視覺的靜態快照(拷貝)

15.8.3判定元素在某點

判定是口中指定位置有什麼元素,可以使用document.elementFromPoint()

引數:傳遞x,y座標返回元素

但只返回最裡面最上面的元素(z-index)

如果指定的店在視口以外,返回null轉換為文件座標一樣返回null

15.8.4滾動

window物件的scrollTop()方法

引數:x,y座標,可以讓瀏覽器滾動到指定點出現在視口的左上角(即滾動條向上,向左)

如果指定點在太右,太下只能保證儘可能接近

還有scrollBy,scroll,scrollTo

如果想要瀏覽器滾動到使某個元素可見,可以使用scrollIntoView()方法,

這個方法預設(不穿引數)的情況下:試圖將元素接近視口上沿

傳遞(false):將元素接近視口下沿

15.8.5關於元素尺寸,位置,溢位的更多資訊

任何html元素都有隻讀屬性offsetLeft,offsetTop,用來返回x,y軸座標,但是這些值是文件座標,但對於已定為元素的後代元素和一些其他元素,這些屬性返回的是相對於祖先元素

offsetParent屬性指定這些元素所相對的父元素

clientWidth,clientHeight與offsetHeight,offsetWidth的區別:

clientWidth,clientHeight不包含邊框大小,只包含內容和內邊距,如果在內邊距和邊框之間加了滾動條,返回值不包含滾動條,通常對於內聯元素,這兩個屬性的值為0

且在文件根元素查詢這兩個屬性時,他們的返回值和視窗的innerWidth,innerHeight 屬性值相同

clientTop,clientLeft的值通常等於左邊和上邊的邊框寬度,如果有左邊或者上面的滾動條,則包含滾動條的寬度,通常對於內聯元素,這兩個屬性的值為0

scrollWidth以及scrollHeight是元素內容區域加上內邊距加上任何溢位內容的尺寸,如果沒有溢位部分,則等於clientxxx的值

最後:scrollLeft和scrollTop是指定滾動條的位置,注意此方法是可寫屬性,通過設定它們來讓元素中的內容滾動

html元素沒有scrollTo,只有window物件有