您现在的位置: 365建站网 > 365文章 > JS 原生OffsetParent属性使用方法

JS 原生OffsetParent属性使用方法

文章来源:365jz.com     点击数:282    更新时间:2017-08-19 10:15   参与评论

offsetParent属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。 如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素(在标准兼容模式下为html元素;在怪异呈现模式下为body元素)的引用。 当容器元素的style.display 被设置为 "none"时(译注:IE和Opera除外),offsetParent属性 返回 null。

句法:
parentObj = element.offsetParent

变量:
· parentObj 是一个元素的引用,当前元素的偏移量在其中计算。

</>code

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Untitled Document</title>
  6. <script type="text/javascript" language="JavaScript">
  7.   function offset_init() {
  8.   var pElement = document.getElementById("sonObj");
  9.   parentObj = pElement.offsetParent;
  10.   alert(parentObj.tagName);
  11.     }
  12. </script>
  13. </head>
  14. <body onload="offset_init()">
  15. <div id="parent">
  16. <p id="sonObj">测试OffsetParent属性</p>
  17. </div>
  18. </body>
  19. </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

</>code

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Untitled Document</title>
  6. <style type="text/css">
  7. #parent {
  8.     position: absolute; <!-- position:relative; -->
  9.     left: 25px;
  10.     top: 188px;
  11.     border: 1px solid black;
  12. }
  13. </style>
  14. <script type="text/javascript" language="JavaScript">
  15.     function offset_init() {
  16. var pElement = document.getElementById("sonObj");
  17. parentObj = pElement.offsetParent;
  18. alert(parentObj.tagName);
  19.     }
  20. </script>
  21. </head>
  22. <body onload="offset_init()">
  23. <div id="parent">div测试代码
  24. <p id="sonObj">测试OffsetParent属性</p>
  25. </div>
  26. </body>
  27. </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

</>code

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Untitled Document</title>
  6. <style type="text/css">
  7. #Grandfather {
  8.     position: relative;
  9.     left: 25px;
  10.     top: 188px;
  11.     border: 1px solid black;
  12. }
  13. </style>
  14. <script type="text/javascript" language="JavaScript">
  15. function offset_init() {
  16. var pElement = document.getElementById("sonObj");
  17. parentObj = pElement.offsetParent;
  18. alert(parentObj.tagName);
  19.     }
  20. </script>
  21. </head>
  22. <body onload="offset_init()">
  23. <h1 id="Grandfather">
  24. <div id="parent">
  25. <p id="sonObj">测试OffsetParent属性</p>
  26. </div>
  27. </h1>
  28. </body>
  29. </html>

测试结果:
Firefox3:"H1"
Internet Explorer 7:"H1"
Opera 9.51:"H1"
Chrome 0.2:"H1"
Safari 3:"H1"

jQuery CSS 操作 - offsetParent() 方法:https://www.365jz.com/jquery/css_offsetparent.html

结论:
当某个元素及其父元素都未进行CSS定位时(absolute或者relative),则这个元素的offsetParent属性的取值为在DOM结构层次中距离其最近,并且已进行了CSS定位的元素。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (282人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号