首页 web前端 js教程 js获取浏览器的可视区域尺寸的实现代码_javascript技巧

js获取浏览器的可视区域尺寸的实现代码_javascript技巧

May 16, 2016 pm 05:58 PM
尺寸

测试例子:

复制代码 代码如下:

BR>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











结果:

chrome:


FF

OPERA:

SAFARI:

IE9:

IE8

IE7:

IE6

说明:

Chrome/FF/Safari/opera<br>对这些浏览器而言,window有个属性innerWidth/innerHeight包含的是整个文档的可视区域尺寸,注意,这个尺寸是包含滚动条大小的。<br>如果我们不计滚动条的影响,就可以直接使用这两个属性。<br>如果滚动条会影响(比如最大化弹出框),那么应该想另外的办法。<br><br>Document对象是每个DOM树的根,但是它并不代表树中的一个HTML元素,document.documentElement属性引用了作为文档根元素的html标记,document.body属性引用了body标记<br>我们这里获取常见的三个值(scrollWidth、offsetWidth和clientwidth)来比较一下<br><br>document.documentElement.scrollWidth返回整个文档的宽度<br>document.documentElement.offsetWidth返回整个文档的可见宽度<br>document.documentElement.clientwidth返回整个文档的可见宽度(不包含边框),clientwidth = offsetWidth - borderWidth<br>不过一般来说,我们不会给document.documentElement来设置边框,所以这里的clientwidth 与 offsetWidth一致<br><br>document.body.scrollWidth返回body的宽度<br><span style="COLOR: #ff0000">注意,这里的scrollWidth有个不一致的地方,基于webkit的浏览器(chrome和safari)返回的是整个文档的宽度,也就是和document.documentElement.scrollWidth一致,</span><br>opera和FF返回的就是标准的body 的scrollWidth,个人觉得opera和FF算是比较合理的。<br>document.body.offsetWidth返回body的offsetWidth<br>document.body.clientwidth返回body的clientwidth(不包含边框),clientwidth = offsetWidth - borderWidth<br><br>我们看上面的例子,会发现body和documentElement的有些值是相等的,这并不是表示他们是等同的。而是因为当我们没有给body设置宽度的时候,document.body默认占满整个窗口宽度,于是就有:<br>document.body.scrollWidth = document.documentElement.scrollWidth<br>document.body.offsetWidth = document.documentElement.offsetWidth<br>document.body.clientwidth = document.documentElement.clientwidth - document.body.borderWidth(body的边框宽度)<br>当我们给body设置了一个宽度的时候,区别就出来了。<br><br>IE9/IE8<br>这两个差不多,唯一的区别是IE9包含window.innerWidth属性,而IE8不包含window.innerWidth属性。<br>document.documentElement.scrollWidth返回整个文档的宽度,和FF等浏览器一致<br>document.documentElement.offsetWidth返回整个文档的可见宽度(包含滚动条,值和innerWidth一致),注意,这里和FF等浏览器又有点区别。<br>document.documentElement.clientwidth返回整个文档的可见宽度(不包含边框),和FF等浏览器一致。clientwidth = offsetWidth - 滚动条宽度<br><br>document.body.scrollWidth返回body的宽度,<span style="COLOR: #ff0000">注意,这里的scrollWidth和FF等浏览器有点区别,这里并不包括body本身的border宽度。</span><br><span style="COLOR: #ff0000">因此例子中,相比FF少了10px。</span><br>document.body.offsetWidth返回body的offsetWidth,和FF等浏览器一致<br>document.body.clientwidth返回body的clientwidth(不包含边框),和FF等浏览器一致,clientwidth = offsetWidth - borderWidth<br><br>IE7<br>IE7与IE9/IE8的主要区别是<br>第一、document.documentElement.offsetWidth的返回值不一样,<br>参见上面说的,IE9/IE8的document.documentElement.offsetWidth包含滚动条,<span style="COLOR: #ff0000">但是,IE7的document.documentElement.offsetWidth不包含滚动条。</span><br>第二、document.documentElement.scrollWidth返回整个文档的宽度,<span style="COLOR: #ff0000">注意,这里和IE9/IE8、FF等浏览器又有不一致,对于IE9/IE8、FF等浏览器,scrollWidth最小不会小于窗口的宽度,但是在IE下没有这个限制,文档有多小,这个就有多小</span><br>其他倒是挺一致的。<br><br>最后是IE6了<br>IE6的document.documentElement返回值与IE9/IE8没有区别(由此可见,对于document.documentElement,IE7就是个奇葩)。<br><span style="COLOR: #ff0000">话说回来,IE的document.body就是个奇葩,当没有给body设置宽度的时候,body是默认占满整个文档的(注意,其他的浏览器都是占满整个窗口),当然,最小值是整个窗口的大小,就是说body指向了根元素。</span><br>因此,在算上IE6在解析width方面的bug,和其他的浏览器的区别就淋漓尽致了。<br>document.body.scrollWidth返回body的宽度,和IE9/IE8/IE7一致<br>document.body.offsetWidth返回body的offsetWidth,注意,由于body的不同,这里的offsetWidth = scrollWidth + borderWidth<br>document.body.clientwidth返回body的clientwidth(不包含边框)clientwidth = offsetWidth - borderWidth<br><span style="COLOR: #ff0000">另外,有一点和IE7同样,就是document.documentElement.scrollWidth没有最小宽度限制。</span>
登录后复制

总结一下,在标准模式下,我们获取文档可见区域的方法如下:

复制代码 代码如下:

function getViewSizeWithoutScrollbar(){//不包含滚动条
return {
width : document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
}
function getViewSizeWithScrollbar(){//包含滚动条
if(window.innerWidth){
return {
width : window.innerWidth,
height: window.innerHeight
}
}else if(document.documentElement.offsetWidth == document.documentElement.clientWidth){
return {
width : document.documentElement.offsetWidth,
height: document.documentElement.offsetHeight
}
}else{
return {
width : document.documentElement.clientWidth + getScrollWith(),
height: document.documentElement.clientHeight + getScrollWith()
}
}
}

getScrollWith()是获取滚动条尺寸,参见
http://www.jb51.net/article/29036.htm
有什么错误欢迎指出
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

a4纸尺寸是多少厘米 a4纸尺寸是多少厘米 Feb 11, 2024 pm 11:51 PM

a4纸现在用于的地方有很多,比如说办公、学习等等,现在复印所用到的纸张基本上都是a4纸,有很多的小伙伴不知道a4纸尺寸是多少厘米的现在就来看一下吧。一、尺寸A4纸规格为21cm×29.7cm(210mm×297mm),世界上多数国家所使用的纸张尺寸都是采用这一国际标准。二、由来A4纸是210mm×297mm的由来。原因一:一张长为2,宽为X的矩形,对折之后长宽分别是X和1,那么为了保证相似,就要求1:X=X:2。得到的比例为。然而297除以210,得到的是1.414,接近于,而这个比例正是一张纸

电脑尺寸怎么算 电脑尺寸怎么算 Mar 20, 2023 pm 01:43 PM

电脑尺寸的计算方法:1、找一个平面且稳定的桌子,将显示器放置在桌子上面,保持显示器的稳定;2、用尺子量对角线的长度;3、通过厘米和英尺之间的单位转换,计算显示器尺寸即可。

a4纸尺寸是几比几 a4纸尺寸是几比几 Apr 25, 2024 am 11:55 AM

1、A4纸张的长宽比不同于常见的2:3或3:4。它的独特比例为√2:1,使其在众多纸张尺寸中脱颖而出。2、这特殊的比例为A4纸张提供了理想的视觉效果和实用性。

怎么把照片变小尺寸「新手必看:压缩图片大小详细步骤」 怎么把照片变小尺寸「新手必看:压缩图片大小详细步骤」 Feb 06, 2024 pm 06:55 PM

很多朋友用相机记录自己的生活习惯吧,有些专业摄影的朋友可能还会用单反相机拍摄更清晰的照片。但是单反相机拍出来的照片虽然清晰,但对于一张几十兆的照片来说,无疑会增加存储设备的压力。那么,有什么办法可以在尽量保留画面细节的同时,减少照片体积呢?其实压缩图片就好了。那么怎么压缩图片大小呢?下面就分享两个好方法。方法一:我们可以在美图工具中将图片导入,无需进行其他处理和编辑。保存图片时,系统会提供画质调整选项,我们可以拖动滑块调整保留的清晰度。当预估大小满足需求时,点击保存即可。方法二:①.先打开这款“

a5尺寸是多大 a5尺寸是多大 Apr 24, 2024 pm 05:53 PM

1、A5纸张是一种国际标准纸张尺寸,其尺寸为148毫米x210毫米(5.83英寸x8.27英寸)。2、它经常被用于信纸、笔记本、传单和书籍等各种应用。3、A5纸张的尺寸略大于半张A4纸张,是A系列纸张尺寸中的第五个尺寸。4、该系列尺寸是由德国工程师瓦尔特·波特曼于20世纪初开发的,旨在创建一系列基于黄金比例的标准纸张尺寸。

华为p40尺寸长宽高是多少 华为p40尺寸长宽高是多少 Jun 26, 2023 am 11:31 AM

华为p40尺寸是长148.9毫米,宽71.06毫米,厚8.50毫米,重约175克包含电池 ,是华为公司研发的智能手机,于2020年3月26日在线上全球发布,有冰霜银,晨曦金,零度白,亮黑色,深海蓝等5种颜色,其搭载麒麟9905GSoC芯片,将处理器和基带合二为一,创新设计CPU三档能效架构、16核GPU超级集群,能效和晶体管密度,支持更全5G段频。

如何使用Python改变图片尺寸和大小 如何使用Python改变图片尺寸和大小 Aug 17, 2023 pm 11:21 PM

如何使用Python改变图片尺寸和大小简介:在很多应用场景中,我们可能需要改变图片的尺寸和大小,以适应不同的需求。Python提供了丰富的库来处理和操作图像,使得我们可以轻松地进行图片尺寸和大小的调整。本文将介绍如何使用Python来改变图片的尺寸和大小,并提供代码示例供读者参考。使用PIL库PIL(PythonImagingLibrary)是Pytho

商品多规格SKU在PHP中的实现方式及详解 商品多规格SKU在PHP中的实现方式及详解 Sep 05, 2023 pm 12:21 PM

商品多规格SKU在PHP中的实现方式及详解在电商平台中,商品的多规格SKU(库存量单位)是非常常见的。SKU可以理解为一个商品的不同属性组合,如尺寸、颜色、款式等。不同的SKU对应着不同的库存量,客户在购买商品时需要选择具体的SKU。在PHP中,我们可以通过数组来实现商品多规格SKU的管理和展示。本文将详细介绍SKU的实现方式,并提供相应的代码示例。一、SK

See all articles