JS OffsetParent属性深入解析

 更新时间:2014年01月13日 09:09:20   作者:  
本篇文章要是对JS中的OffsetParent属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所 帮助

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定位的元素。

相关文章

  • Lerna入门之管理TypeScript monorepo教程

    Lerna入门之管理TypeScript monorepo教程

    这篇文章主要为大家介绍了Lerna入门之管理TypeScript monorepo教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • JS给按钮添加跳转功能类似a标签

    JS给按钮添加跳转功能类似a标签

    这篇文章主要介绍了JS给按钮添加跳转功能类似a标签,需要的朋友可以参考下
    2017-05-05
  • 小程序如何获取多个formId实现详解

    小程序如何获取多个formId实现详解

    这篇文章主要介绍了小程序如何获取多个formId实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Solidity可支付函数使用示例详解

    Solidity可支付函数使用示例详解

    这篇文章主要为大家介绍了Solidity可支付函数的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • javascript 判断页面访问方式电脑或者移动端

    javascript 判断页面访问方式电脑或者移动端

    这篇文章主要介绍了 判断页面访问方式电脑或者移动端的相关资料,这里提供了三种方法,需要的朋友可以参考下
    2016-09-09
  • 整理一些最近经常遇到的前端面试题

    整理一些最近经常遇到的前端面试题

    这篇文章主要给大家整理了一些在面试的时候经常遇到的前端面试题,本文总结的这三十道面试题都是一些最近碰到的一些较为有用的前端题目,相信会对大家面试具有一定的参考价值,需要的朋友可以参考学习,下面来一起看看吧。
    2017-04-04
  • js判断一个对象是否在一个对象数组中(场景分析)

    js判断一个对象是否在一个对象数组中(场景分析)

    这篇文章主要介绍了js判断一个对象是否在一个对象数组中,本文通过场景分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-08-08
  • Javascript简写条件语句(推荐)

    Javascript简写条件语句(推荐)

    下面小编就为大家带来一篇Javascript简写条件语句(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • javascript 变量作用域 代码分析

    javascript 变量作用域 代码分析

    作用域(scope)是javascript中一项令人棘手的的特性。所有面向对象编程语言都有某种形式的作用域,不过和把这个概念放在什么上下文中有关。在javascript里,作用域是由函数划分的。
    2009-06-06
  • TypeError: Cannot set properties of undefined (setting ‘xx‘)的问题及解决方法

    TypeError: Cannot set properties of 

    这篇文章主要介绍了TypeError: Cannot set properties of undefined (setting ‘xx‘)的问题,本文给大家分享完美解决方案,需要的朋友可以参考下
    2023-09-09

最新评论