参考:
offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素(在标准兼容模式下为html元素;在怪异呈现模式下为body元素)的引用。 当容器元素的style.display 被设置为 "none"时(译注:IE和Opera除外),offsetParent属性 返回 null。
句法:
parentObj = element.offsetParent
变量:
· parentObj 是一个元素的引用,当前元素的偏移量在其中计算。
<!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>
测试结果:
Firefox3:"BODY"
Internet Explorer 7:"BODY"
Opera 9.51:"BODY"
Chrome 0.2:"BODY"
Safari 3:"BODY
结论:
当某个元素及其DOM结构层次中元素都未进行CSS定位时(absolute或者relative)[或者某个元素进行CSS定位时而DOM结构层次中元素都未进行CSS定位时],则这个元素的offsetParent属性的取值为根元素。更确切地说,这个元素的各种偏移量计算(offsetTop、offsetLeft等)的参照物为Body元素。(其实无论时标准兼容模式还是怪异模式,根元素都为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>
测试结果:
Firefox3:"DIV"
Internet Explorer 7:"DIV"
Opera 9.51:"DIV"
Chrome 0.2:"DIV"
Safari 3:"DIV"
结论:
当某个元素的父元素进行了CSS定位时(absolute或者relative),则这个元素的offsetParent属性的取值为其父元素。更确切地说,这个元素的各种偏移量计算(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>
测试结果:
Firefox3:"H1"
Internet Explorer 7:"H1"
Opera 9.51:"H1"
Chrome 0.2:"H1"
Safari 3:"H1"
结论:
当某个元素及其父元素都未进行CSS定位时(absolute或者relative),则这个元素的offsetParent属性的取值为在DOM结构层次中距离其最近,并且已进行了CSS定位的元素。
分享到:
相关推荐
### JavaScript offsetParent 案例详解 #### 一、offsetParent 定义 在Web开发中,`offsetParent`是一个非常重要的属性,它用于获取一个元素的偏移父元素。根据定义,`offsetParent`指的是距离当前元素最近的进行...
offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根...
- 如果 `obj` 没有 `offsetParent` 但是存在 `x` 和 `y` 属性,则直接累加 `obj.x` 和 `obj.y`。 - 返回 `[curleft, curtop]` 数组,包含最终计算出的坐标。 ##### `findPosY` 函数 这个函数专门用于获取元素的 Y...
1. **Offset Parent**:每个DOM元素都有一个`offsetParent`属性,它指向最近的一个设置了CSS定位(如`position: relative`、`position: absolute`等)的祖先元素。如果不存在这样的祖先元素,则`offsetParent`为`...
这里的`offsetParent`通常是指最近的带有定位(position)属性(除了static)的祖先元素。这两个属性返回的是像素值,可以用来计算元素的位置。 ### 知识点二:深入剖析findPosX和findPosY函数 #### `findPosX`...
第一篇就先讲讲Javascript中的offsetParent属性吧。 支持的浏览器:Internet Explorer 4.0+,Mozilla 1.0+,Netscape 6.0+,Opera 7.0+,Safari 1.0+ element.offsetParent Summary offsetParent returns a ...
里主要说的是 offsetParent 属性,这个属性在 MSDN 的文档中也没有解释清楚,这就让人更难理解这个属性。 这几天在网上找了些资料看看,再加上自己的一些测试,对此属性有了那么一点的了解,在这里总结一下。
现代做法更倾向于使用JavaScript或CSS的`sticky`属性来实现固定效果。 - **`z-index`**: 在CSS中,`z-index`属性用于控制元素的堆叠顺序。在此处设置较高的`z-index`值,可以确保表头在其他元素之上显示,避免遮挡...
js知识总结 MouseEvent属性: 1.clientX,clientY(点击位置距离当前body可视区域的x,y) 2.pageX,pageY(对于整个页面来说,包括被卷去的body部分的长度) 3.screenX,screenY(点击位置距离当前电脑屏幕的x,y坐标...
在JavaScript中,我们可以通过各种属性来控制和操作Div元素,实现丰富的动态效果。以下是一些主要的Div属性及其详细说明: 1. accessKey:设置或获取对象的快捷键,使得用户可以通过键盘快速激活Div元素。 2. ...
### Gridview固定表头(JS方法) #### 概述 在Web开发中,尤其是在处理大量数据展示时,GridView 是一个非常实用的控件。当数据量较多时,用户需要滚动查看,这时候固定表头功能就显得尤为重要。固定表头可以让...
JavaScript中的offsetLeft属性是DOM元素的一个只读属性,它用来获取当前元素距离其最近的已定位(即position属性不是static的)父辈元素左边缘的距离。如果找不到已定位的父辈元素,那么它会返回元素距离整个文档...
这份文档《JavaScript经典代码大全收集.pdf》中展示了许多JavaScript的经典代码片段,这些片段涵盖了JavaScript在网页编程中的常见用途,包括操作DOM元素、事件处理、页面跳转、弹窗、焦点控制等多个方面。...
它通过遍历元素及其所有父元素的`offsetParent`属性来计算总偏移量。`offsetLeft`和`offsetTop`分别表示元素相对于其最近的定位祖先元素的左侧和顶部距离。最终,将这些偏移量累加得到元素的绝对坐标。 复制代码 ...
根据给定文件的部分内容,我们可以总结出一系列与网页开发,特别是JavaScript相关的实用技巧。下面将对这些技巧进行详细的解释和扩展: ### 技巧1:屏蔽鼠标右键 使用`oncontextmenu`事件处理程序可以阻止用户在...
此方法返回一个对象,该对象包含元素相对于视口的 top、right、bottom 和 left 属性。 ```javascript function getElementPos(elementId) { var el = document.getElementById(elementId); if (el.parentNode === ...
该函数首先获取了一个元素的引用,然后使用 while 循环不断地获取该元素的 offsetLeft 和 offsetTop 属性,直到该元素的 offsetParent 属性为空为止。 在该函数中,我们使用了两个变量 w 和 h 来累加每个父元素的 ...