業務開發中常常會用到元素或者瀏覽器窗口的各類top值,最近開發組件的過程當中也遇到各類問題,所以決定好好總結一下。css
常見的top值html
scrollTopgit
Element.scrollTop
屬性能夠獲取或設置一個元素的內容垂直滾動的像素數。
一個元素的 scrollTop值是這個元素的頂部到它的最頂部可見內容(的頂部)的距離的度量。當一個元素的內容沒有產生垂直方向的滾動條,那麼它的 scrollTop 值爲0。github
// 得到滾動的像素數 var intElemScrollTop = someElement.scrollTop; // 運行此代碼後, intElemScrollTop 是一個整數,即element的內容向上滾動的像素數。 // 設置滾動的距離 element.scrollTop = intValue;
scrollTop 能夠被設置爲任何整數值,同時注意:瀏覽器
獲取window對象的scrollTop存在兼容性問題。wordpress
解決方案1post
if(window.pageYOffset){//這一條濾去了大部分, 只留了IE678 }else if(document.documentElement.scrollTop ){//IE678 的非quirk模式 }else if(document.body.scrolltop){//IE678 的quirk模式 }
解決方案2ui
scrolltop = (((t = document.documentElement) || (t = document.body.parentNode)) typeof t.scrollTop == ‘number’ ? t : document.body).scrollTop
來源》.net
offsetTopcode
HTMLElement.offsetTop
爲只讀屬性,它返回當前元素相對於其 offsetParent 元素的頂部的距離。
元素的offsetTop是相對於父級元素的,並非直接獲取到距離頁面頂部的距離,須要區分不一樣狀況!!!
offsetParent
向上尋找有定位的祖先節點,依不一樣情況會有不一樣結果:
clientTop
一個元素頂部邊框的寬度(以像素表示)。不包括頂部外邊距或內邊距。clientTop 是隻讀的。
獲取元素的top-border寬度。
screenTop
screenLeft和screenTop屬性返回窗口相對於屏幕的X和Y座標。
Element.getBoundingClientRect()
經常使用於肯定元素相對於視口的位置。該方法會返回一個DOMRect對象,包含left, top, width, height, bottom, right六個屬性。
getClientRects() 返回一個TextRectangle集合,就是TextRectangleList對象。
其餘方法
elementFromPoint() 返回給定座標處所在的元素
scrollIntoView() 讓元素滾動到可視區域