zoukankan      html  css  js  c++  java
  • js原生offsetParent解析

    offsetParent是个仅仅读属性,返回近期显示指定位置的容器元素的引用。

    假设元素没有指定位置,近期的元素或者根元素(标准模式下是html,怪异模式下是body)就是offsetParent。

    当元素的style.display='none'时。offsetParent返回null。

    因为offsetTop和offsetLeft是相对于页边距,因此offsetParent是很实用的。

        
    浏览器兼容性
         在以WebKit为核心的浏览器上,假设元素是隐藏的(该元素或者上级元素style.display='none')或者元素自身style.position='fixed',那么就会返回null。

        在IE(9)上如元素style.position='fixed',该属性就会返回null。(然而display:none不影响这个浏览器)

    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
      <title>offsetParent属性</title>
      <style type="text/css">
        div {
          margin: 5px;
        }
        #div11 {
          border: 2px solid #0000ff;
        }
        #div21 {
          position: relative;
          border: 2px solid #ffff00;
        }
        #div30 {
          position: relative;
          border: 2px solid red;
        }
        #div31 {
        }
      </style>
      <script type="text/javascript">
        function initPage() {
          getOffsetParent('div12'); //BODY
          getOffsetParent('div22');//DIV
          getOffsetParent('div32');//BODY
        }
        function getOffsetParent(id) {
          var divEl = document.getElementById(id);
          var el = divEl.offsetParent;
          console.log(el.nodeName);
          console.log('element id is ' + el.getAttribute('id') || '');
        }
      </script>
    </head>
    <body onload="initPage()">
    <div id="div11">
      <div id="div12">測试1</div>
    </div>
    <div id="div21">
      <div id="div22">測试2</div>
    </div>
    <div id="div30">
      <div id="div31">
        <div id="div32">測试3</div>
      </div>
    </div>
    </body>
    </html>


  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    团队作业—个人记录
    4.21
    4.20
    4.19
    4.18
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6882081.html
Copyright © 2011-2022 走看看