在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能获取到的各种屏幕大小信息的更多相关文章

  1. vue中如何让多个echarts随屏幕大小变化

    在vue项目中使用Echarts  一般window.onsize在页面中只能存在一个. 如何在一个页面中多个echarts使用window.onresize?    myChart 可以放在Data ...

  2. vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined

    如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...

  3. 在页面跳转的时候,在跳转后的页面中使用js 获取到 页面跳转的url中携带的参数。

    common.js代码 //获取URL中的参数..等等function getQueryString(name){var reg = new RegExp("(^|&)"+ ...

  4. Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框

    <html> <body> <script> function showAlert(){ alert("JavaScript - hello , worl ...

  5. 对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

    来自   https://blog.csdn.net/u011088260/article/details/79563315   最近在研究HTML页面中JavaScript的执行顺序问题.在Java ...

  6. GetConsoleScreenBufferInfo 函数--获取控制台屏幕缓冲区信息

    GetConsoleScreenBufferInfo函数 来源:https://msdn.microsoft.com/en-us/library/ms683171(v=vs.85).aspx 作用 获 ...

  7. 使用JavaScript设置、获取父子页面中的值

    一:获取父页面中的值 有二种方法windows.open()和windows.showModalDialog() 1.windos.open(URL,name,reatures,replace) 再父 ...

  8. jQuery基础学习5——JavaScript方法获取页面中的元素

    给网页中的所有<p>元素添加onclick事件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  9. 一行JavaScript代码获取页面中的所有超链接地址

    因为我喜欢收集Web开发类的网址,平时对网址就很敏感. 我总结了一下我收集网址的几个阶段: 1.纯手工阶段,傻傻的阶段. 在这个阶段,主要是收集一些在页面中展现出来的网址,就是说,如果网址出现在HTM ...

随机推荐

  1. 天龙八步&quot;细说浏览器输入URL后发生了什么

    本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务器处理请求: 5.返回响应结果: 6.关闭TCP连接: 7.浏览器解析HTML: 8.浏览器布局渲染: 总结 输 ...

  2. Robotium 框架学习之概述

    框架目的: Robotium is an Android test automation framework that has full support for native and hybrid a ...

  3. Javascript中prototype属性

    prototype作为JS相对比较难理解的一个知识点,在这里发表下自己的理解. 本文将包含以下几部分内容: 1.js prototype的简单介绍, 2.js构造函数的介绍, 3.prototype的 ...

  4. Python 运行效率为何低

    当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间:另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间.编码效率和运行效率往往是鱼与熊掌的 ...

  5. c语言的字符串

    1. 字符串   1. 什么是字符串 ● 简单的字符串”itcast” ● 一个’i’是一个字符 ● 很多个字符组合在一起就是字符串了 2. 字符串的初始化 ● char a[] = “123”;   ...

  6. 初学时遇到的小问题Your content must have a ListView whose id attribute is 'android.R.id.list'

    问题提出 错误提示:Your content must have a ListView whose id attribute is 'android.R.id.list' 关于解决Your conte ...

  7. js 获取每月有几周,根据年月周获取该周从周一到周日的日期等方法

    本文基于react-native 本人在用react-native写一个关于课程表的APP时需要课程表按照日期周期显示,网上查了许多方法,都没有达到自己想要的效果,根据一些方法的参考,再根据自己思维写 ...

  8. ubuntu debain下好用的编辑器

    geany: 轻量级的IDE apt-get install geany 用来写shell脚本和python十分方便.特别写python脚本时,它有丰富的提示和自动补全功能.查看代码也很方便

  9. linux下php7安装memcached、redis扩展

    linux下php7安装memcached.redis扩展 1.php7安装Memcached扩展 比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 memcache ...

  10. PHP实现excel

    导入 public function excel_put(){ //先做一个文件上传,保存文件 $path=$_FILES['file']; $filePath = "uploads/&qu ...