offsetParent算法分析
当调用元素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。
前面已经提到,以上是工作草案的内容,所以与现行的浏览器不一定一致,注释如下:
注1Firefox不适用;IE6不适用;DOCTYPE使IE7不支持fixed时不适用(以下简称IE6模式)。
注2Firefox不适用。
注3上级元素的position属性计算值是fixed,并且IE6或者IE6模式不适用。
注4IE7模式中,如果元素的position属性计算值是absolute或relative,返回元素HTML,而不是BODY。
总结
由此看出,获得offsetParent在各个浏览器中,各个浏览器的各个版本中,同一版本的不同模式中,都有不同的算法,实在有些麻烦。所以还是建议将其理解为通过offsetParent循环和offsetLeft、offsetTop可以获得控件在浏览器中的绝对位置即可。
但庆幸的是有一种常见布局在各种浏览器中offsetParent是一样的,那就是:外层元素div的position计算值是relative、absolute时,内层元素div的offsetParent总是外层元素div。
相关文章
- 一致 Hash 算法分析
- 【算法】复变函数
- 一名数据分析师到算法工程师的转岗经历
- 算法分析与设计论文
- 智能分析网关新增算法分析结果展示列表,支持多方式检索
- Paxos算法详解
- 10大常用的排序算法(算法分析+动图演示)
- 蓝桥杯 算法训练 3000米排名预测---------C语言—菜鸟级
- 基于YOLO算法看守所人员行为分析监测
- 【大厂高频算法题】二分查找
- oracle 拉链表算法,拉链表设计算法「建议收藏」
- 前端leetcde算法面试套路之堆
- 老梁学算法三年都会翻车的二分法,如何一朝顿悟?
- R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告|附代码数据
- 【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
- 共享单车需求量数据用CART决策树、随机森林以及XGBOOST算法登记分类及影响因素分析|附代码数据
- java堆排序算法代码详解编程语言
- [C语言] 数据结构-算法效率的度量方法-事前分析估算方法详解编程语言
- Linux下实现银行家算法的挑战(linux银行家算法)
- 精准掌控Redis集群存储算法可靠性分析(redis集群 存储算法)
- 基于KMP算法JavaScript的实现方法分析
- C++算法之海量数据处理方法的总结分析
- c++非变易算法-stl算法