国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS中獲取 DOM 元素的絕對位置實例詳解

2024-05-06 15:19:45
字體:
來源:轉載
供稿:網友

在操作頁面滾動和動畫時經常會獲取 DOM 元素的絕對位置,例如 本文 左側的懸浮導航,當頁面滾動到它以前會正常地渲染到文檔流中,當頁面滾動超過了它的位置,就會始終懸浮在左側。

本文會詳述各種獲取 DOM 元素絕對位置 的方法以及對應的兼容性。關于如何獲取 DOM 元素高度和滾動高度,請參考視口的寬高與滾動高度 一文。

概述

這些是本文涉及的 API 對應的文檔和標準,供查閱:

API 用途 文檔 標準
offsetTop 相對定位容器的位置 MDN CSSOM View Module
clientTop 上邊框寬度 MDN CSSOM View Module
.getBoundingClientRect() 元素大小和相對視口的位置 MDN CSSOM View Module
.getClientRects() 所有子 CSS 盒子的大小和位置 MDN CSSOM View Module
.getComputedStyle() 應用所有樣式表和計算之后的 CSS 屬性 MDN DOM Level 2 Style CSSOM

offsetTop/offsetLeft

HTMLElement.offsetTop 用來獲取當前元素(不包括上邊框)相對于定位容器(positioning container)的位置。也就是說,

如果所有祖先元素都是靜態定位 position:static;(這是默認的情況),offsetTop 表示與文檔最上方的高度差(文檔最上方可能已經滾出視口,這個高度可能大于視口高度)。

如果存在絕對定位的祖先元素 position:absolute/fixedoffsetTop 就會相對于這個元素。因此為了獲取相對于文檔最上方的高度差,需要遞歸地調用:

function getOffsetTop(el){ return el.offsetParent  ? el.offsetTop + getOffsetTop(el.offsetParent)  : el.offsetTop}

el.offsetParent 是當前元素的定位容器(positioning container),如果當前元素沒有絕對定位的祖先節點,這個屬性的值就是 null

兼容性和限制:幾乎所有瀏覽器都支持該屬性。如果元素被隱藏它的值就是 0,但在 IE9 下沒有影響。

clientTop/clientLeft

不要被名字誤導,Element.clientTop 是指當前元素的 上邊框的寬度 的整數值。總是等于 getComputedStyle() 返回的 border-top-width 屬性的四舍五入為整數后的值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 松阳县| 凤山县| 那坡县| 昌图县| 玉屏| 泌阳县| 浑源县| 穆棱市| 古蔺县| 呼图壁县| 阿拉尔市| 赤峰市| 武义县| 淳安县| 内丘县| 保山市| 营口市| 吉隆县| 肇东市| 电白县| 巴彦淖尔市| 九台市| 周宁县| 蓬安县| 微博| 项城市| 色达县| 麻江县| 平谷区| 会东县| 胶州市| 东乡县| 祁东县| 江阴市| 阿克| 姜堰市| 舟山市| 绥芬河市| 邵东县| 孝昌县| 肥东县|