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>
posted on 2017-05-20 14:20 gavanwanggw 阅读(168) 评论(0) 编辑 收藏 举报