关键词:
js提供了大量的属性来描述窗口尺寸,但是在不同的浏览器中,存在着一些细节差异,本文用来记录这些容易忘记的小细节
标准模式 PC端 屏幕尺寸1920*1080 全屏浏览器测试 格式 宽 / 高
浏览器/属性 | inner | documentElement.client | body.client |
i8 | undefined / undefined | 1899 / 961 | 3000 /3500 |
i9+ | 1920 / 982 | 1903 /965 | 3000 /3500 |
chrome | 1920 / 974 | 1903 / 957 | 3000 / 3500 |
firefox | 1920 / 974 | 1903 / 957 | 3000 / 3500 |
从图上可以看出,innerWidth是很适用的,除了ie8及其以下版本不支持外,所有的浏览器都能返回正确的视口值
innerHeight在ie9+以上的浏览器中比其他浏览器多了8px,这是因为IE9+的浏览器头部高度为58px,而其他两款浏览器的头部高度为66px,比ie多占用了8px导致的,所以该值也是普遍适用的。
在ie9+以上,和其他的浏览器中,documentElement.cilentWidth,height,比起inner少了17px,因为滚动条占居17px
而在ie8中,该值比在ie9+的浏览器中还少了4px,目前不知道原因
在没有滚动的方向上,两者值是相同的,如果需要统一包含或者不包含滚动条,可以在这两种值中,加上或者减去17px,就能保持一致
body.clientWidth明显是不行的,无论在那个版本中,该属性值保存的是body元素的尺寸,当然如果视口与body一样大的话,也可以使用该值
总结:inner可以视为是包含滚动条尺寸的视口,documentElement.client可以视为不包含滚动条尺寸的视口,两者在存在滚动条的方向上相差17px
除此之外没有区别
要注意的是由于ie浏览器的头部高度比其他浏览器矮了8px,所以在视口的高度上比其他浏览器多了8px,所以IE看上去比较高。</>
body.client不能拿来判断视口尺寸。
混杂模式 PC端 屏幕尺寸1920*1080 全屏浏览器测试 格式 宽 / 高
浏览器/属性 | inner | documentElement.client | body.client |
i8 | undefined / undefined | 1899 / 961 | 3000 /3500 |
i9 | 1920 / 982 | 1903 /965 | 3000 /3500 |
i10+ | 1920 / 982 | 1903 /965 | 1903 /965 |
chrome | 1920 / 974 | 1903 / 3500 | 1903 / 957 |
firefox | 1920 / 974 | 1903 / 3500 | 1903 / 957 |
混杂模式下,inner系列的表现和标准模式下一致,ie8仍然不支持,ie9+以上的浏览器仍然高了8px
混杂模式下的ie8,ie9与标准模式下的ie8,ie9的三个值完全一致,但是从ie10+开始,body.client就不一样了,ie10+的浏览器中的body.client,和其他两个属性相同,不再代表body元素的尺寸
所以,在混杂模式下,ie10+的浏览器,你可以任意使用,因为三者的值都是相同的
chrome和firefox中的body.client也不再代表body元素的尺寸,也可以使用
docuementElement.clientHeight也跟着抽风了,在混杂模式下该height代表body元素的height
总结:不要开启混杂模式
js获取浏览器中的各种宽高值
width:clientWidth:对象实际内容的宽度,不包含边线,最大不超过视口宽度 offsetWidth:对象实际宽度,包含边线,最大不超过视口宽度 scrollWidth:对象实际宽度,不包含边线,可超过视口宽度height:(都可超过视口高度)c... 查看详情
使用 ExtJS-4X 或 javascript 获取视口高度
】使用ExtJS-4X或javascript获取视口高度【英文标题】:GettingviewportheightusingExtJS-4Xorjavascript【发布时间】:2013-02-0608:10:53【问题描述】:我想使用ExtJs或原生javascript获取视口的高度。我怎样才能得到这个高度?我没有使用任何extjs视... 查看详情
js获取鼠标当前的位置
有时候,我们需要得到窗口拖动或者鼠标移动的距离,此时可以通过计算鼠标前后在页面中的位置来得到想要的结果,下面介绍几个事件属性:1、客户区坐标位置 鼠标事件都是在浏览器视口中的特定位置上发生的。这个... 查看详情
使用 jQuery 获取视口大小
】使用jQuery获取视口大小【英文标题】:UsingjQueryToGetSizeofViewport【发布时间】:2011-03-0322:35:30【问题描述】:如何使用jQuery来确定浏览器视口的大小,并在调整页面大小时重新检测到这一点?我需要在这个空间中设置一个IFRAME大... 查看详情
text获取视口尺寸(代码片段)
获取视口两侧的纬度和经度
】获取视口两侧的纬度和经度【英文标题】:Getlatitudeandlongitudeoftheviewport\'ssides【发布时间】:2013-01-1120:15:08【问题描述】:可能重复:getcurrentlatlngbounds?我正在寻找使用Google地图API获取地图视口的纬度和经度的最佳方式。理想... 查看详情
QGraphicsView:如何高效获取QGraphicsItems的视口坐标?
】QGraphicsView:如何高效获取QGraphicsItems的视口坐标?【英文标题】:QGraphicsView:HowtoefficientlygettheviewportcoordinatesofQGraphicsItems?【发布时间】:2012-02-0701:03:54【问题描述】:有没有一种快速的方法来获取QGraphicsView中QGraphicsItems的视口... 查看详情
如何在javascript中获取鼠标相对于窗口视口的位置?
】如何在javascript中获取鼠标相对于窗口视口的位置?【英文标题】:Howtogetthemousepositionrelativetothewindowviewportinjavascript?【发布时间】:2013-01-2023:24:15【问题描述】:event.pageY获取相对于整个文档高度的鼠标位置(我假设为document.do... 查看详情
从 geoJSON 获取地图视口中存在的要素
】从geoJSON获取地图视口中存在的要素【英文标题】:GetfeaturespresentinmapviewportfromgeoJSON【发布时间】:2017-06-0512:21:41【问题描述】:我需要在地图上为我拥有的数据添加标记。在思考过程中,我浏览了map.data.loadGeoJson(\'google.json\');... 查看详情
获取视口java语言中的所有元素
...能(在javascript或jquery中但没有任何插件)在当前视口中获取所有元素(例如表行tr)而无需遍历每个元素?我发现了很多示例,这些示例如何检查指定元素是否在当前视口中,但是我需要的是一个函数返回当前视口中所有元素的... 查看详情
javascript获取浏览器视口宽度和高度(代码片段)
javascript在视口#js中(代码片段)
javascript在视口#js中(代码片段)
zepto.js:视口和延迟加载插件?
】zepto.js:视口和延迟加载插件?【英文标题】:zepto.js:ViewportandLazyloadplugins?【发布时间】:2012-07-0320:00:53【问题描述】:我曾经使用jQuery并且正在使用jQueryLazyLoadPluginhttp://www.appelsiini.net/projects/lazyloadjQueryViewportPluginhttp://www.appels... 查看详情
如何在特定视口上设置触摸手势/hammer.js 处于活动状态?
】如何在特定视口上设置触摸手势/hammer.js处于活动状态?【英文标题】:Howtosettouchgestures/hammer.jsactiveonaspecificviewport?【发布时间】:2018-10-0916:59:09【问题描述】:我刚刚为我正在构建的网站构建了带有触摸事件的轮播滑块。目... 查看详情
获取浏览器视口的宽度和高度,无论内容大小如何且不调整为 100%?
】获取浏览器视口的宽度和高度,无论内容大小如何且不调整为100%?【英文标题】:Getthebrowserviewportwidthandheightnomatterthesizeofthecontentsandwithoutsizingto100%?【发布时间】:2020-03-3117:52:57【问题描述】:有没有办法在不将正文宽度和高... 查看详情
Ext JS 5 - 将网格面板添加到视口
】ExtJS5-将网格面板添加到视口【英文标题】:ExtJS5-addgridpaneltoviewport【发布时间】:2015-02-2116:23:40【问题描述】:我正在寻找一种将网格面板添加到我的视口的方法,我尝试使用add()函数,但这对我不起作用。Ext.应用程序(名称... 查看详情
unity3d获取相机视口四个角的坐标
功能:如标题所示,主要考虑用来做3dPlane的自适应屏幕 ///<summary>///获取指定距离下相机视口四个角的坐标///</summary>///<paramname="cam"></param>///<paramname="distance">相对于相机的距离</param>///<returns& 查看详情