作家
登录

offsetParent 算法分析

作者: 来源:www.28hudong.com 2013-03-30 01:42:28 阅读 我要评论

当调用元素 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。

  推荐阅读

  javascript 单例模式演示代码 javascript面向对象编程

js的单例写法 JS单例模式 div{height:100px; width:100px; background:#CCC; border:#000 1px solid;} 你是?(单例) 你是?(普通) [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] lo>>>详细阅读


本文标题:offsetParent 算法分析

地址:http://www.17bianji.com/kaifa2/JS/26683.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)