HTML页面中JavaScript能获取到的各种屏幕大小信息
在HTML页面中,通过JavaScript代码访问 window 对象,能够获取到很多表征屏幕大小的信息,下面列举并加以区分。
window 对象中的屏幕信息
window.innerheight、 window.innerwidth
- 只读属性,以像素计
- 浏览器窗口的文档显示区的高度和宽度
- 不包括菜单栏、工具栏以及滚动条等的高度
- IE8以下不支持这些属性,用 document.documentElement 或 document.body (与 IE 的版本相关)的 clientWidth 和 clientHeight 属性作为替代
window.outerheight、 window.outerwidth
- 只读属性,以像素计
- 整个浏览器窗口的高度和宽度
- 常用于设置 window.open 打开的窗口宽度和高度
- IE8以下不支持此属性,且没有提供替代的属性
window.screenLeft、 window.screenTop、 swindow.creenX、 window.screenY
- 只读属性,整数
- 浏览器窗口的左上角在屏幕上的的 x 坐标和 y 坐标
- IE、Safari 和 Opera 支持 screenLeft 和 screenTop
- Firefox 和 Safari 支持 screenX 和 screenY
window.screen.availHeight、 window.screen.availHeightavailWidth
- 以像素计
- 浏览器的屏幕的可用高度和宽度
- Windows中不包括分配给半永久特性(如屏幕底部的任务栏)的垂直空间
window.screen.height、 window.screen.width
- 以像素计
- 显示器屏幕的高度和宽度
- 调整显示设备的分辨率会发生变化
- 少部分移动设备上面的值并不是真正的显示屏大小,如三星S8
document 对象中的屏幕信息
很复杂!真的很复杂!这些值根据是否指定 DOCTYPEIE 、网页是否超过窗口宽度 有关系。而且FireFox,Chrome这些主流浏览器里面针对元素的 clientWidth、 offsetWidth、 scrollWidth信息技术都有各自的标准。下面简单说明作为参考。详细新在实际应用中进行调整。
下面的 document.body 和 document.documentElement 类似,body也是一个DOM element。
document.body.clientHeight、 document.body.clientWidth
- 浏览器中可显示内容区域的高度和宽度
- document.documentElement 表示元素的可见高度和宽度
- 与页面内容多少无关
- 滚动条不算在内,padding算在内
- clientHeight = topPadding + bottomPadding+ height - scrollbar.height
document.body.offsetHeight、 document.body.offsetWidth
- 包括边线的网页内容可见区域高度和宽度
- offsetHeight = clientHeight + 滚动条 + 边框
document.body.scrollHeight、 document.body.scrollWidth
- 网页正文全文高度和宽度
- 不同的浏览器中 scrollHeight 和 clientHeight 的大小关系不一样
解决方案
可以使用下面的方式折中取 scrollWidth 和 clientWidth :
var scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
var clientWidth = document.documentElement.clientWidth || document.body.clientWidth;
下面列举通用HTML元素 element 的大小属性信息:
- element.clientHeight : 元素的可见高度
- element.clientWidth : 元素的可见宽度
- element.offsetHeight : 元素的高度
- element.offsetWidth : 元素的宽度
- element.offsetLeft : 元素的水平偏移位置
- element.offsetTop : 元素的垂直偏移位置
- element.offsetParent : 元素的偏移容器
- element.scrollHeight : 元素的整体高度
- element.scrollLeft : 元素左边缘与视图之间的距离
- element.scrollTop : 元素上边缘与视图之间的距离
- element.scrollWidth : 元素的整体宽度
由于本人才疏学浅,不乏遗漏错误,欢迎大家指出。
原文出处:http://uusama.com/496.html
HTML页面中JavaScript能获取到的各种屏幕大小信息的更多相关文章
- vue中如何让多个echarts随屏幕大小变化
在vue项目中使用Echarts 一般window.onsize在页面中只能存在一个. 如何在一个页面中多个echarts使用window.onresize? myChart 可以放在Data ...
- vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined
如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...
- 在页面跳转的时候,在跳转后的页面中使用js 获取到 页面跳转的url中携带的参数。
common.js代码 //获取URL中的参数..等等function getQueryString(name){var reg = new RegExp("(^|&)"+ ...
- Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框
<html> <body> <script> function showAlert(){ alert("JavaScript - hello , worl ...
- 对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析
来自 https://blog.csdn.net/u011088260/article/details/79563315 最近在研究HTML页面中JavaScript的执行顺序问题.在Java ...
- GetConsoleScreenBufferInfo 函数--获取控制台屏幕缓冲区信息
GetConsoleScreenBufferInfo函数 来源:https://msdn.microsoft.com/en-us/library/ms683171(v=vs.85).aspx 作用 获 ...
- 使用JavaScript设置、获取父子页面中的值
一:获取父页面中的值 有二种方法windows.open()和windows.showModalDialog() 1.windos.open(URL,name,reatures,replace) 再父 ...
- jQuery基础学习5——JavaScript方法获取页面中的元素
给网页中的所有<p>元素添加onclick事件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- 一行JavaScript代码获取页面中的所有超链接地址
因为我喜欢收集Web开发类的网址,平时对网址就很敏感. 我总结了一下我收集网址的几个阶段: 1.纯手工阶段,傻傻的阶段. 在这个阶段,主要是收集一些在页面中展现出来的网址,就是说,如果网址出现在HTM ...
随机推荐
- [转载] 详述三种现代JVM语言--Groovy,Scala和Clojure
转载自http://www.tuicool.com/articles/jYzuAv和http://www.importnew.com/1537.html 在我与Martin Fowler曾经合作呈现的 ...
- [转载] Gossip算法学习
转载自http://blog.csdn.net/yfkiss/article/details/6943682/ 1. 概述gossip,顾名思义,类似于流言传播的概念,是一种可以按照自己的期望,自行选 ...
- 使用 Rust 构建分布式 Key-Value Store
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 引子 构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,首先就是我们的系统到底需要提供什么样的功能 ...
- 字符串的缺点以及StringBuilder
字符串的缺点: String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的 ...
- LINQ学习系列-----2.3 迭代器带来的延迟查询
此篇博文承接上一篇博文: LINQ学习系列-----2.2 迭代器 一.第一次执行 废话不多说,上源码: 执行结果下图: 为什么会这样?其实原因很简单 fro ...
- 使用docker搭建Jenkins 及slave的配置
安装Jenkins 使用docker docker run -d -p 8080:8080 -p 50000:50000 -v /opt/jenkins_home:/var/jenkins_home ...
- IOS 修改UIImage大小
在iOS中,uiimage没有用于修改大小的属性,要在代码中改变uiimage图片的大小,需要扩展UIImage类,如下: 头文件: #import<UIKit/UIKit.h> @int ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
- svn 如果遇到an unversioned directory of the same name already exists的解决办法
svn 如果遇到an unversioned directory of the same name already exists的解决办法 一般这种情况是因为,在一个已经存在的文件夹里做SVN che ...
- mysql优化sql语句的方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...