IE7以上(不是火狐):

  父级没有定位:

    本身没有定位:

      ==> offsetParent:body

    本身定位为:absolute/relative:

      ==> offsetParent:body

  

  父级有定位:

    本身没有定位:

       ==> offsetParent:定位父级

    本身定位为:absolute/relative:

       ==> offsetParent:定位父级

    本身定位为: fixed

      ==> offsetParent: null

火狐

  父级没有定位:

    本身没有定位:

      ==> offsetParent:body

    本身定位为: absolute/relative:

      ==> offsetParent:body

    本身定位为:fixed

      ==> offsetParent:body

  父级有定位:

    本身没有定位:

      ==> offsetParent:定位父级

    本身定位为: absolute/relative:

      ==> offsetParent:定位父级

    本身定位为:fixed

      ==> offsetParent:body

IE7以下:

  父级没有定位:

    本身没有定位:

      ==>offsetParent:body

    本身定位为absolute/relative

      ==>offsetParent:body

    本身定位为fixd

      ==>offsetParent:null

   父级有定位:

    本身没有定位:

      ==>offsetParent:定位父级

    本身定位为absolute/relative

      ==>offsetParent:定位父级

    本身定位为fixd

      ==>offsetParent:null

总结:

  offsetParent(如果body和html直接的margin被清掉)

  本身定位为fixed:

    ==> offsetParent: null( IE7以上(不是火狐) )

  本身定位不为fixed:

    ==> offsetParent:定位父级

haslayout

  IE7以下,如果当前元素的某个父级触发了haslayout,

    那么offsetParent就会指向到这个layout特性的父结点上

拓展 :

offsetWidth,offsetHeight     ==>     border-box

  clientWidth,clientHeight      ==>    padding-box

  

注意:

  window.onload = function(){

    //根标签的clientWidth(document.documentElement.clientWidth)并不是可视区域的宽度,而是视口的宽度
                var w = document.documentElement.clientWidth;
                var w2 = document.documentElement.offsetWidth;
                console.log(w,w2);
            }

  在IE10及IE10以下 , 根标签的 clientWidth 和 offsetWidth 统一被指定为视口的宽度。

HTMLElement.offsetParent(offsetLeft和offsetTop参照offsetParent的内边距边界)的更多相关文章

  1. offsetleft、offsetTop、offsetParent的兼容性问题

    先来看看offsetParent返回的是什么值 ele.offsetParent返回的是ele元素最近的并且是定位过(relative,absolute)的父元素,如果没有父元素或者是父元素中没有一个 ...

  2. 简单理解offsetleft、offsetTop、offsetParent

    先来看看offsetParent返回的是什么值 ele.offsetParent返回的是ele元素最近的并且是定位过(relative,absolute)的父元素,如果没有父元素或者是父元素中没有一个 ...

  3. 【JavaScript】全面解析offsetLeft、offsetTop

    假设 obj 为某个 HTML 控件.obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素. obj.offsetRight 指 obj 距离右方或上层控件的位置,整型, ...

  4. 盒子 offsetLeft、offsetTop、offsetWidth、getBoundingClientRect等属性解释

    offsetLeft 获取的是忽略 margin 当前元素距离上一级父节点(有没有设置position,有的话依据父节点,没有的话依据页面最左端这时候不管滚动条移到哪) 当前元素向左的位置 记住它会将 ...

  5. offsetLeft与offsetTop详解

    offsetLeft与offsetTop使用方法一样,只是一个是找距离定位父级(position:relative)左边的距离,一个是找距离定位父级上边的距离 没有定位则找body,我们还是看看ie7 ...

  6. js中的offsetParent,offsetLeft,offsetTop及jquery的offset(),position()比较

    1.offsetParent 元素的offsetParent并不是元素的父元素,判断元素的offsetParent要根据以下情况: 1)当DOM结构层次中的元素均没有进行css定位(设置positio ...

  7. 1.offsetParent,offsetLeft,offsetTop

    offsetParent <!doctype html> <html> <head> <meta charset="utf-8"> ...

  8. 通过一个实例理解 offsetLeft,offsetTop; offsetWidth , offsetHeight

    obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型 obj.offsetLeft 指 obj 相对于版面或由 offsetParen ...

  9. 【转】获取到元素的 offsetLeft 、offsetTop属性不正常的解决方法。

    原地址:http://hi.baidu.com/huidust520/item/85da006981a6c635ad3e834e 我在工作中遇到个问题: 在ie7下和360浏览器下获取到的  offs ...

随机推荐

  1. Java多线程之synchronized和volatile

    概述 用Java来开发多线程程序变得越来越常见,虽然Java提供了并发包来简化多线程程序的编写,但是我们有必要深入研究一下,才能更好的掌握这块知识. 本文主要对Java提供的底层原语synchroni ...

  2. Python类的特殊成员方法

    __doc__ 类的描述信息. class dog: '''这是狗的类''' def __init__(self,name): self.name = name self.__age = None p ...

  3. MongoDB地理空间(2d)索引创建与查询

    LBS(Location Based Services)定位服务,即根据用户位置查询用户附近相关信息,这一功能在很多应用上都有所使用.基于用户位置进行查询时,需要提供用户位置的经纬度.为了提高查询速度 ...

  4. MySql 存储大量长字节 Text报错处理办法

    今天线上版本的错误: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large ...

  5. pdo一次插入多条数据的2种实现方式

    pdo一次插入多条数据的2种实现方式: **** 1.一个sql插入多个值,防注入处理放在获取到值的时候使用htmlspecialchars(addslashes($params )); try{ f ...

  6. C++——动态内存分配3

    动态创建多维数组  new 类型名T[下标表达式1][下标表达式2]…: 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达 ...

  7. jQuery里ready方法用原生js实现原理

    function ready(fn){ if(document.addEventListener){ //标准浏览器 document.addEventListener('DOMContentLoad ...

  8. Python自定义任务发邮件提醒

    前言 在工作中,有时会有一些定期需要执行的任务或在将来某一天需要执行的任务,为避免疏漏,设计个小工具,发邮件提醒自己去处理. 方案简介 1.建立一个Excel文件,里面定义好待提醒的任务 2.建立一个 ...

  9. MySQL常用命令符

    收集于网络!!!! 解决字符乱码问题:显示汉语而非乱码:set names utf8: 修改新密码:update user set password=PASSWORD('新密码') where use ...

  10. 巨杉Talk | 拒绝数据碎片化,原生分布式数据库灵活应对数据管理需求

    2019年7月19-20日,以“运筹帷幄,数揽未来”为主题的DAMS中国数据智能管理峰会在上海青浦区成功举办.在DAMS峰会上,巨杉数据库为大家带来了题为“云架构下的分布式数据库设计与实践”的主题分享 ...