offsetParent,offsetLeft,offsetTop
来源:互联网 发布:shake it off舞蹈 编辑:程序博客网 时间:2024/05/20 00:37
Summary: 返回的是相对元素本身最近的是定位元素的祖先元素,也就是postion的值是 absolute,relative,fixed,(inherit 继承父元素也是前三者)其中之一,如果祖先元素都不是定位元素那么返回document.body
PS: IE6,IE7 对offsetParent解释有个小BUG,当祖先元素都不是定位元素且本身是定位元素的时候返回document.documentElement,其他情况终返回document.body!!
Demo:
<body>
</body>
按照这样理解可以推断elemnt.offsetParent本身在获取的时候要通过页面不断查找父元素,直到找到最近的定位元素或者document.body,在代码多层嵌套的时候,需要向上查找未知的层次。效率可见一斑~ 尤其是在某些浏览器下计算页面元素位置的时候引用elemnt.offsetParent element.offsetLeftelement.offsetTop 三者进行循环计算的时候效率很低。
a.offsetParent >> b
c.offsetParent >> document.body
e.offsetParent >> document.body
elemnt.offsetLeft \ elemnt.offsetTop
Summary: 返回相对elemnt.offsetParent的位置
PS:IE8,IE9 Preview,Opera 和个别状况下的IE6,IE7返回的值包括elemnt.offsetParent的borderLeftWidth和borderTopWidth
Demo:
<style type="text/css">
#b{position:relative; background:#E3EBF4; width:300px; height:300px; border:20px solid #628DC0 }
#a{position:absolute; background:#9E9E9E; width:100px; height:100px; left:100px; top:100px;}
</style>
<div id="b">
<div id="a"></div>
</div>
document.getElementByIdx('a').offsetLeft >> 100
document.getElementByIdx('a').offsetTop >> 100
上面是正确的值,而在IE8和Opera里面均返回 120,如果对b的CSS做一些修改,如下:
#b{position:relative; background:#E3EBF4; border:20px solid #628DC0 } 去掉width 和height,
那么在ie6,7里面返回也出现了问题
ie6:
document.getElementByIdx('a').offsetLeft >> 120
document.getElementByIdx('a').offsetTop
ie7:
document.getElementByIdx('a').offsetLeft >> 120
document.getElementByIdx('a').offsetTop
所以在IE8,Opera 以及特殊情况的IE6 IE7里面
- offsetParent,offsetLeft,offsetTop Update
- offsetParent,offsetLeft,offsetTop
- offsetLeft,offsetTop,offsetParent详解
- offsetWidth、offsetHeight、offsetLeft、offsetTop、offsetParent
- offsetTop、offsetLeft、offsetWidth、offsetHeight、offsetParent、offsetrect
- 理清offsetparent()、offsetLeft/offsetTop、offset()、position()
- 【转】js中offsetLeft,offsetTop,offsetParent详解
- offsetLeft offsetHeight offsetTop offsetWidth offsetParent学习笔记
- offsetTop.offsetLeft,offsetWidth,offsetHeight,offsetParent,scrollTop,scrollLeft,scrollWidth,scrollHeight区别
- 无定位父元素时offsetParent为body,但是offsetTop/offsetLeft计算距离从html开始
- 5offsetLeft,offsetParent,getBoundingClientRect
- offsetTop,offsetWidth,offsetParent
- offsetTop,offsetWidth,offsetParent 2
- Js offsetTop、offsetParent...
- offsetLeft,offsetTop,scrollLeft,scrollTop
- offsetTop、offsetLeft、offsetWidth、offsetHeight
- OffsetTop & OffsetLeft 属性
- offsetTop、offsetLeft、offsetWidth、offsetHeight
- 习惯而已
- 制作iOS搜索应用 搜索结果关键词高亮不同样式
- 快速创建和mysql表对应的java domain实体类
- 【Android开发】利用XML实现扁平化按钮和圆角矩形
- Android核心基础——Day01_1
- offsetParent,offsetLeft,offsetTop
- 美好生活
- 努力,等待
- 买官卖官潜规则
- _beginthreadex' : undeclared identifier
- PHP thinksns 打印Excel
- 数学符号的读法和英文表示
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- Netty4.0学习笔记系列之一:Server与Client的通讯