offsetTop
是一個只讀屬性,它返回元素相對于其包含塊(containing block)的頂部邊界的偏移距離。這個距離是只讀的,不能被設置。offsetTop
的值總是相對于當前元素的包含塊的頂部邊界的位置來計算的。
在固定定位(position: fixed;
)中,offsetTop
的計算方式與其他定位方式(如相對定位 position: relative;
、絕對定位 position: absolute;
或粘性定位 position: sticky;
)有所不同。在固定定位中,元素的位置是相對于瀏覽器窗口(或視口)的,而不是相對于其包含塊的位置。
因此,當元素使用固定定位時,offsetTop
的值將表示該元素距離瀏覽器窗口頂部的垂直距離,而不是距離其包含塊頂部的距離。這意味著,無論用戶如何滾動頁面,offsetTop
的值都將保持不變。
需要注意的是,offsetTop
只考慮元素的垂直偏移,而不考慮水平偏移。要獲取元素的水平偏移,可以使用 offsetLeft
屬性。
下面是一個簡單的示例,演示了如何使用 offsetTop
和固定定位:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OffsetTop in Fixed Position</title>
<style>
.container {
position: relative;
height: 200px;
background-color: lightblue;
}
.fixed-element {
position: fixed;
top: 50px;
left: 50px;
width: 100px;
height: 100px;
background-color: orange;
}
</style>
</head>
<body>
<div class="container">
<div class="fixed-element"></div>
<p>Scroll down to see the effect.</p>
</div>
<script>
const fixedElement = document.querySelector('.fixed-element');
console.log('OffsetTop:', fixedElement.offsetTop); // 輸出:OffsetTop: 50
</script>
</body>
</html>
在這個示例中,.fixed-element
使用了固定定位,并且其 offsetTop
的值為 50,表示它距離瀏覽器窗口頂部的垂直距離為 50px。當用戶向下滾動頁面時,.fixed-element
的位置將保持不變,但其 offsetTop
的值仍然為 50,因為它始終相對于瀏覽器窗口的頂部邊界進行定位。