一、getBoundingClientRect獲取元素位置
用於獲取頁面中某個元素左,上,右和下分別相對瀏覽器視窗的位置。它返回的是一個對象,對象中包含{left,right,bottom,top,x,y,height,width}八個屬性
其中left,top,x, y是距離瀏覽器窗口左上角的位置坐標。而height,width則是元素的高。right是指元素右邊界距窗口最左邊的距離,bottom是指元素下邊界距窗口最上面的距離
注意:x,y在ios10.3版本中獲取不到(其他情況待定)。只能用left和top。 默認它是不計算頁面的滾動距離的,跨瀏覽器的解決方案。
二、getBBox()過去svg中的元素位置
在svg中一些標簽無法獲取他的元素和位置。所以用getBBox以返回一個 包含 x, y, width, height 的 SVGRect 對象, 表明 SVG 元素在 viewport 內部的寬高和左上角坐標, 不受到 SVG Transform 和 SMIL 動畫影響.
三、getClientRects()
getClientRects()返回一個TextRectangle集合,就是TextRectangleList對象。getBoundingClientRect 返回 一個TextRectangle對象,即使DOM里沒有文本也能返回TextRectangle對象。
四:瀏覽器差異
除了safari,firefox2.0外所有瀏覽器都支持getClientRects和getBoundingClientRect,firefox 3.1給TextRectangle增加了 width 和 height。ie 和非ie瀏覽器在使用getClientRects還是有些差別的,ie獲取TextRectangleList的范圍很大。而非ie獲取的范圍比較小, 只有display:inline的對象才能獲取到TextRectangleList,例如em i span 等標簽。通過測試,至少Chrome 2+\Safari 4\Firefox3.5\0pera 9.63+已經支持getBoundingClientRect方法。使用場景差異:出於瀏覽器兼容的考慮,現在用得最多的是getBoundingClientRect()
用來獲取元素的信息