在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. Java中static关键字的详解

    static关键字可以修饰方法和成员变量(不可以修饰局部变量,但是可以修饰内部类). static关键字方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者 ...

  2. JavaScript学习笔记(七)——函数的定义与调用

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  3. python从2.7升级到3.5 需要主要的问题

    今天鼓足勇气把我们python从2.7升级到3.5.我用的是pycharm开发工具.升级过程遇到一些问题小结下: 1.右击项目: 找到左侧 project interpreter选项,配置项目开发环境 ...

  4. JavaWeb框架SSH_Struts2_(三)

    1. Struts2的拦截器(使用拦截器实现权限控制) 拦截器简介 拦截器概述 拦截器工作原理 拦截器的配置 Struts2的内建拦截器 内建拦截器的介绍 内建拦截器的配置 自定义拦截器 实现自定义拦 ...

  5. tcp并发服务器(c20w)

    ** 原创文章,请勿转载 ** 并发服务器是一个老生常谈的话题,今天这里也写一个. 1. 目标: 同时在线连接20万(c20w). 开发语言:重要的事情说三遍,GOLANG, GOLANG, GOLA ...

  6. 学习MySQL(上)

    具体实例 1.PHP 服务器组件 对于初学者建议使用集成的服务器组件,它已经包含了 PHP.Apache.Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程. Window 系统可以使用 ...

  7. JS弹窗带遮蔽的功能

    很不错的JS原生自定义弹窗,很实用! function myAlert(str,click,useCancel){ var overflow=""; var $hidder=nul ...

  8. 在azure中建立DDC集群

    在Azure上建立DDC集群 建立3台虚拟机作为UCP集群,3台虚拟机作为DTR集群. 资源组:HYD-DockerDateCenter 虚拟机size:DS3 4核14G 系统:ubuntu14.0 ...

  9. Java(概略篇)

    准备 下载并安装Java jdk 和 编辑器(eclipse或Netbeans) 配置环境变量 第一个程序 public class test{ public static void main(Str ...

  10. 爬起点小说day03

    # 把所有类别的前3页的小说爬取下来 import scrapyfrom scrapy.http import Requestfrom time import sleepfrom qidianNove ...