JavaScript offsetParent

antzone發表於2017-10-11

offsetParent可以返回一個元素物件,只讀屬性。

根據上下文條件的不同,返回的元素也會不同,區分如下:

(1).如果祖先元素中具有定位元素,此屬性返回距離它最近的定位元素。

(2).如果祖先元素中沒有定位元素,那麼返回最近的table、td、th或者body元素。

此屬性通常與offsetTop與offsetLeft屬性配合使用。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
element.offsetParent

瀏覽器支援:

(1).IE瀏覽器支援此屬性。

(2).edge瀏覽器支援此屬性。

(3).谷歌瀏覽器支援此屬性。

(4).opera瀏覽器支援此屬性。

(5).火狐瀏覽器支援此屬性。

(6).safria瀏覽器支援此屬性。

程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{width:300px;height:200px;position:relative;background:red;}
#middle{width:200px;height:100px;background:blue;}
#inner{width:50px;height:50px;background:green;line-height:50px;}
</style>
<script>
window.onload=function(){
  let inner=document.getElementById("inner");
  inner.innerHTML=inner.offsetParent.id;
}
</script>
</head>
<body>
<div id="box">
  <div id="middle">
    <div id="inner"></div>
  </div>
</div>
</body>
</html>

上述程式碼可以獲取inner元素的offsetParent屬性值。

程式碼分析如下:

(1).inner祖先元素中,box元素採用相對定位。

(2).那麼inner的offsetParent屬性返回值就是box元素。

(3).所以最終將box元素的id屬性值寫入inner元素。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#box{width:300px;height:200px;background:red;}
#middle{width:200px;height:100px;background:blue;}
#inner{width:120px;height:50px;background:green;line-height:50px;}
</style>
<script>
window.onload=function(){
  let inner=document.getElementById("inner");
  inner.innerHTML=inner.offsetParent.id;
}
</script>
</head>
<body id="ant">
<div id="box">
  <div id="middle">
    <div id="inner"></div>
  </div>
</div>
</body>
</html>

在上面程式碼中,inner元素沒有定位祖先元素。

所以inner的offsetParent屬性返回值就是body元素,最終將body的id寫入inner。

相關文章