offsetHeight|offsetHeight,clientHeight,innerHeight,outerHeight,scrollHeight区别

  • 元素偏移区域
    • offsetWidth (border + padding+width)
    • offsetHeight (border + padding + height)
    • offsetLeft (元素距离定位父级左内边线的水平距离)
    • offsetTop (元素距离定位父级上内边线的垂直距离)
    • offsetParent (获取元素定位父级,父级加除了position:inherit|initial|static之外的定位属性则会得到该父级,否则一直往上找,直到找到有定位的祖先级或body为止,如果其父级有position:inherit继承并且继承到定位属性,则定位父级也为其父级元素)
      • firefox并没有考虑固定定位的问题,在加了固定定位的元素,火狐返回body,其他浏览器返回null
      • 在查找元素定位父级的时候,当元素的父级有除了static,initial,inherit(特殊情况除外)外的定位,则该元素的定位父级,为该父元素,否则会一直往上找,直到找到有除了以上定位的元素或者找到body停止
  • 可视区域
    • clientHeight (padding + height)不包含滚动条部分,也就是说不包含隐藏的部分
    • clientWidth (padding + width)不包含滚动条部分,也就是说不包含隐藏的部分
    • clientTop (上边框的width)
    • clientLeft (左边框的width)
  • 滚动区域
    • scrollwidth (padding + width)包含水平滚动条部分,也就是内容区域的宽度,包含被隐藏的部分
    • scrollHeight (padding + height)包含垂直滚动条部分,也就是内容区域的高度,包含被隐藏的部分
    • 以上两个属性如果内部有隐藏部分,则它们的值为子元素的margin + padding + border + (width | height)
    • scrollLeft (滚动条滚动的水平距离,默认为0)
    • scrollTop (滚动条滚动的垂直距离,默认为0)
  • 浏览器窗口大小
    • window.innerWidth (浏览器窗口宽度,不包含工具栏,菜单等,仅仅是可视区域dom的width)
    • window.innerHeight (浏览器窗口高度,不包含工具栏,菜单等,仅仅是可视区域dom的height)
    • window.outerWidth (浏览器窗口宽度,包含工具栏、菜单等,整个浏览器的width)
    • window.outerHeight (浏览器窗口高度,包含工具栏、菜单等,整个浏览器的height)
    • IE有兼容问题,可用document.documentElement.clientWidth|clientHeight代替

    推荐阅读