JS OffsetParent屬性深入解析
offsetParent屬性返回一個對象的引用,這個對象是距離調(diào)用offsetParent的元素最近的(在包含層次中最靠近的),并且是已進(jìn)行過CSS定位的容器元素。 如果這個容器元素未進(jìn)行CSS定位, 則offsetParent屬性的取值為根元素(在標(biāo)準(zhǔn)兼容模式下為html元素;在怪異呈現(xiàn)模式下為body元素)的引用。 當(dāng)容器元素的style.display 被設(shè)置為 "none"時(譯注:IE和Opera除外),offsetParent屬性 返回 null。
句法:
parentObj = element.offsetParent
變量:
· parentObj 是一個元素的引用,當(dāng)前元素的偏移量在其中計(jì)算。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" language="JavaScript">
function offset_init() {
var pElement = document.getElementById("sonObj");
parentObj = pElement.offsetParent;
alert(parentObj.tagName);
}
</script>
</head>
<body onload="offset_init()">
<div id="parent">
<p id="sonObj">測試OffsetParent屬性</p>
</div>
</body>
</html>
測試結(jié)果:
Firefox3:"BODY"
Internet Explorer 7:"BODY"
Opera 9.51:"BODY"
Chrome 0.2:"BODY"
Safari 3:"BODY
結(jié)論:
當(dāng)某個元素及其DOM結(jié)構(gòu)層次中元素都未進(jìn)行CSS定位時(absolute或者relative)[或者某個元素進(jìn)行CSS定位時而DOM結(jié)構(gòu)層次中元素都未進(jìn)行CSS定位時],則這個元素的offsetParent屬性的取值為根元素。更確切地說,這個元素的各種偏移量計(jì)算(offsetTop、offsetLeft等)的參照物為Body元素。(其實(shí)無論時標(biāo)準(zhǔn)兼容模式還是怪異模式,根元素都為Body元素)
測試代碼2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
#parent {
position: absolute; <!-- position:relative; -->
left: 25px;
top: 188px;
border: 1px solid black;
}
</style>
<script type="text/javascript" language="JavaScript">
function offset_init() {
var pElement = document.getElementById("sonObj");
parentObj = pElement.offsetParent;
alert(parentObj.tagName);
}
</script>
</head>
<body onload="offset_init()">
<div id="parent">div測試代碼
<p id="sonObj">測試OffsetParent屬性</p>
</div>
</body>
</html>
測試結(jié)果:
Firefox3:"DIV"
Internet Explorer 7:"DIV"
Opera 9.51:"DIV"
Chrome 0.2:"DIV"
Safari 3:"DIV"
結(jié)論:
當(dāng)某個元素的父元素進(jìn)行了CSS定位時(absolute或者relative),則這個元素的offsetParent屬性的取值為其父元素。更確切地說,這個元素的各種偏移量計(jì)算(offsetTop、offsetLeft等)的參照物為其父元素
測試代碼3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<style type="text/css">
#Grandfather {
position: relative;
left: 25px;
top: 188px;
border: 1px solid black;
}
</style>
<script type="text/javascript" language="JavaScript">
function offset_init() {
var pElement = document.getElementById("sonObj");
parentObj = pElement.offsetParent;
alert(parentObj.tagName);
}
</script>
</head>
<body onload="offset_init()">
<h1 id="Grandfather">
<div id="parent">
<p id="sonObj">測試OffsetParent屬性</p>
</div>
</h1>
</body>
</html>
測試結(jié)果:
Firefox3:"H1"
Internet Explorer 7:"H1"
Opera 9.51:"H1"
Chrome 0.2:"H1"
Safari 3:"H1"
結(jié)論:
當(dāng)某個元素及其父元素都未進(jìn)行CSS定位時(absolute或者relative),則這個元素的offsetParent屬性的取值為在DOM結(jié)構(gòu)層次中距離其最近,并且已進(jìn)行了CSS定位的元素。
相關(guān)文章
微信小程序動態(tài)設(shè)置導(dǎo)航欄標(biāo)題的實(shí)現(xiàn)步驟
實(shí)際開發(fā)中很多時候我們需要通過上個頁面?zhèn)鬟^來的值動態(tài)的更改標(biāo)題欄文字,下面這篇文章主要給大家介紹了關(guān)于微信小程序動態(tài)設(shè)置導(dǎo)航欄標(biāo)題的實(shí)現(xiàn)步驟,需要的朋友可以參考下2023-02-02詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用
這篇文章主要介紹了詳解使用Next.js構(gòu)建服務(wù)端渲染應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07video.js 一個頁面同時播放多個視頻的實(shí)例代碼
這篇文章主要介紹了video.js 一個頁面同時播放多個視頻的實(shí)例代碼 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-11-11js+flash實(shí)現(xiàn)的5圖變換效果廣告代碼(附演示與demo源碼下載)
這篇文章主要介紹了js+flash實(shí)現(xiàn)的5圖變換效果廣告代碼,涉及JavaScript結(jié)合flash調(diào)用圖片實(shí)現(xiàn)幻燈廣告效果,并附帶演示與demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04Javascript實(shí)現(xiàn)基本運(yùn)算器
這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)基本運(yùn)算器的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07一文學(xué)會用JS判斷文字是否被省略(ellipsis)
這篇文章主要給大家介紹了用JS如何判斷文字被省略ellipsis,CSS幫我們搞定了省略,但是JS并不知道文本什么時候被省略了,所以我們得通過JS來計(jì)算,接下來,我將介紹2種方法來實(shí)現(xiàn)JS計(jì)算省略,需要的朋友可以參考下2023-08-08微信小程序獲取復(fù)選框全選反選選中的值(實(shí)例代碼)
這篇文章主要介紹了微信小程序獲取復(fù)選框全選反選選中的值,本文通過實(shí)例代碼給大家簡單介紹,需要的朋友可以參考下2019-12-12Javascript中實(shí)現(xiàn)trim()函數(shù)的兩種方法
這篇文章主要介紹了Javascript中實(shí)現(xiàn)trim()函數(shù)的兩種方法,本文直接給出實(shí)現(xiàn)代碼和使用方法,需要的朋友可以參考下2015-02-02JS獲取鼠標(biāo)坐標(biāo)并且根據(jù)鼠標(biāo)位置不同彈出不同內(nèi)容
這篇文章主要介紹了js獲取鼠標(biāo)坐標(biāo)并且根據(jù)鼠標(biāo)位置不同彈出不同內(nèi)容的實(shí)例代碼,需要的朋友可以參考下2017-06-06