获取浏览器视口尺寸的方法

方法一

直接通过window对象中的属性获取浏览器视口尺寸,现代浏览器都支持。

  • window.innerHeight / innerWidth

    方法二

    间接通过或者元素属性获得视口尺寸,现代浏览器都支持。
    计算公式1document.documentElement.clientHeight / clientWidth + 17px(如果有滚动条,需加上17px)
    计算公式2document.body.clientHeight / clientWidth + 17px(如果有滚动条,需加上17px)+ 16px(元素有margin: 8px)
    关键点1对于元素,计算公式1是正确的。但是对于元素,计算公式2只有在样式设置为html, body{height: 100%}时才有效。不然的话,document.body.clientHeight的值与元素的实际宽高有关。

    方法三(兼容写法IE9/IE8以下版本)

    浏览器兼容分析

window.innerWidth document.documentElement.clientWidth document.body.clientWidth element.clientWidth
Chrome(标准模式) 浏览器可视区域尺寸 属性值不包含滚动条的尺寸(但是视口尺寸的计算需要滚动条尺寸) 属性值不包含滚动条的尺寸以及的margin尺寸 元素实际内容+ padding的尺寸,与浏览器的视口尺寸无关。
Chrome(怪异模式) 浏览器可视区域尺寸 同上 属性值不包含滚动条的尺寸(但是视口尺寸的计算需要滚动条尺寸)。在该模式下的margin尺寸又加到了属性里。 同上
IE8及以下(标准模式) 没有 同上 属性值不包含滚动条的尺寸以及的margin尺寸 同上
IE8及以下(怪异模式) 没有 没有 不包含滚动条的17px(如果有) 同上