⭐️ 更多前端技術和知識點,搜索訂閱號
JS 菌
訂閱
下面方法是包括滾動條的寬高,不支持 IE8前端
window.innerWidth window.innerHeight
width + padding + border + 滾動條
另外 outerWidth 瀏覽器兼容差,可獲取包括工具欄的寬高
返回整個頁面的滾動的位置,pageYOffset/pageXOffset 與 scrollY/scrollX 返回的值一致,前者是後者的別名,建議使用前者,不支持 IE8瀏覽器
window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft
標準瀏覽器使用的是 screenX/screenY,IE 中使用的是 screenLeft/screenTop工具
window.screenLeft || window.screenX window.screenTop || window.screenY
getBoundingClientRectspa
使用方法 getBoundingClientRect()
返回的值見下圖:code
IE 只返回 top right bottom left 四個值,若是須要 width height 則須要計算:
function getBoundingClientRect(elem) { let rect = elem.getBoundingClientRect() return { top: rect.top, right: rect.right, bottom: rect.bottom, left: rect.left, width: rect.width || rect.right - rect.left, height: rect.height || rect.bottom - rect.top } }
clientWidth/clientHeightblog
返回元素不含滾動條的尺寸,不包括邊框element
document.documentElement.clientWidth || document.body.clientWidth document.documentElement.clientHeight || document.body.clientHeight
clientLeft/clientToprem
返回的是計算後的 CSS 樣式的 border-left-width/border-top-width 的值,就是邊框的寬度get
offsetWidth/offsetHeightit
一樣能夠使用 offsetWidth/offsetHeight 來獲取元素包括滾動條和邊框的尺寸,這個方法返回元素自己的寬高 + padding + border + 滾動條
offsetLeft/offsetTop
相對於最近的祖先定位元素(CSS position 屬性被設置爲 relative、absolute 或 fixed 的元素)的左右偏移值
offsetLeft/offsetTop 返回元素 X Y 座標值
計算元素的位置:
function getElementPosition(e) { var x = 0, y = 0; while (e != null) { x += e.offsetLeft; y += e.offsetTop; e = e.offsetParent; // 獲取最近的祖先定位元素 } return { x: x, y: y }; }
scrollWidth/scrollHeight
這個方法返回元素內容區域的寬高 + padding + 溢出內容尺寸
document.documentElement.scrollWidth || document.body.scrollWidth document.documentElement.scrollHeight || document.body.scrollHeight
scrollLeft/scrollTop
這個方法返回元素滾動條的位置
所以可用於處理頁面滾動的距離的兼容
請關注個人訂閱號,不按期推送有關 JS 的技術文章,只談技術不談八卦 😊