js获取浏览器的可视区域尺寸的实现代码_javascript技巧
测试例子:
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
有什么错误欢迎指出

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

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

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

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

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

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

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

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

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