当调用元素 A 的 offsetParent 属性时,必须按以下算法返回元素。
以下任一条件为真时,返回 null,并停止本算法。
A 是根元素。
A 是 HTML 的 body 元素。
元素 A 的 position 属性计算值是 fixed。注 1
如果 A 是 HTML 元素 area,并且在其上级元素链中有 HTML 元素 map,返回上级元素链中距 A 最近的 HTML 元素 map,并停止本算法。注 2
如果以下任一条件为真时,返回距 A 最近的符合下述条件的上级元素,并停止本算法。
上级元素的 position 属性计算值不是 static。注 3
上级元素是 HTML 的 body 元素。注 4
A 的 position 属性计算值是 static,上级元素是 td、th 或 table。
返回 null。
前面已经提到,以上是工作草案的内容,所以与现行的浏览器不一定一致,注释如下:
注 1 Firefox 不适用;IE 6 不适用;DOCTYPE 使 IE 7 不支持 fixed 时不适用(以下简称 IE 6 模式)。
注 2 Firefox 不适用。
注 3 上级元素的 position 属性计算值是 fixed,并且 IE 6 或者 IE 6 模式不适用。
注 4 IE 7 模式中,如果元素的 position 属性计算值是 absolute 或 relative,返回元素 HTML,而不是 BODY。
总结
由此看出,获得 offsetParent 在各个浏览器中,各个浏览器的各个版本中,同一版本的不同模式中,都有不同的算法,实在有些麻烦。所以还是建议将其理解为通过 offsetParent 循环和 offsetLeft、offsetTop 可以获得控件在浏览器中的绝对位置即可。
但庆幸的是有一种常见布局在各种浏览器中 offsetParent 是一样的,那就是:外层元素 div 的 position 计算值是 relative、absolute 时,内层元素 div 的 offsetParent 总是外层元素 div。
offsetParent 算法分析_基础知识-js教程-
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。
相关推荐
- 使命召唤战区画面模糊|使命召唤16战区画面贴图模糊解决办法-Golang-
- 如何在iPhone上信任电脑:详细步骤与常见问题解答-故障排查-
- 酷狗怎么取消排队播放 取消排队播放方法图文教程-手机软件-
- 大侠立志传曼陀罗位置在哪-大侠立志传曼陀罗位置分享-游戏攻略-
- 华为手机怎么设置返回键?开启华为手机的返回按钮的方法-Golang-
- 荣耀 Magic7 RSR 保时捷设计手机发布:骁龙 8 至尊版、200MP 超感光潜望长焦,7999 元起-手机新闻-
- boss怎么隐藏自己的简历 隐藏自己的简历方法图文教程-手机软件-
- 七日世界水果蛋糕如何获取-七日世界水果蛋糕获得方法一览-游戏攻略-
- 无限暖暖不羁格纹时装宝箱在哪-无限暖暖不羁格纹时装宝箱位置介绍-游戏攻略-
- 心动小镇玉米糖小鱼如何钓-心动小镇玉米糖小鱼钓鱼攻略-游戏攻略-