首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种。属性根据不同的兼容性也分为五种

  1. window.innerWidth //除去菜单栏的窗口宽度,与浏览器相关
  2. window.innerHeight//除去菜单栏的窗口高度,与浏览器相关
  3. window.outerWidth//包括菜单栏的窗口宽度,与浏览器相关
  4. window.outerHeight//包括菜单栏的窗口宽度,与浏览器相关
  5. window.screen.height//电脑整个屏幕的高度与浏览器无关
  6. window.screen.width//电脑整个屏幕的宽度与浏览器无关
  7. window.screen.availHeight//电脑屏幕的可利用高度,不包含任务栏,与浏览器无关,应该是获取window对象的属性。
  8. window.screen.availWidth//电脑屏幕的可利用宽度,不包含任务栏,与浏览器无关,应该是获取window对象的属性。
  9. window.screenTop//浏览器距离屏幕的高度与浏览器无关
  10. window.screenLeft//浏览器距离屏幕左侧的距离宽度与浏览器无关
  11. document.body.clientWidth//指元素的自身宽度(包括padding),网页可见区域宽,不包括滚动条
  12. document.body.clientHeight//指元素的自身的高度(包括padding),网页可见区域高
  13. document.body.clientLeft//子级div内容位置到父级内容区域的视区宽度距离(获得的是border值)
  14. document.body.clientTop//子级div内容位置到父级内容区域的高度距离(获得的是border值)
  15. document.body.offsetWidth//指定元素的宽度(包括padding,border和内容),包括滚动条
  16. document.body.offsetHeight//指定元素的高度(包括padding,border和内容)
  17. document.body.offsetTop//距离父级元素的高度,默认是document
  18. document.body.offsetLeft//距离父级元素的宽度,默认是document
  19. document.body.scrollWidth//获取的是文档的宽度(当指定的宽度小于浏览器窗口的时候,为浏览器的宽度)(无滚动条时会等于clientWidth)
  20. document.body.scrollHeight//获取的是文档的高度(当指定的高度小于浏览器窗口的时候,为浏览器的高度)(一般情况下会等于clientHeight)
  21. document.body.scrollTop//文档被滚动上去的时候(即滚动条往上滚动的距离)
  22. document.body.scrollLeft//文档被滚动右去的时候(即滚动条往右滚动的距离)

1.与浏览器无关
window.innerWidth
window.outerWidth
window.screen.width
window.screen.availWidth
window.screenLeft (浏览器距离屏幕左侧的距离宽度)

2.与浏览器有关

语法:document.documentElement.clientWidth.或者doucment.body.clientWidth.

clientWidth(距离父级元素clientLeft)

offsetWidth(距离父级元素offsetLeft)

scrollWidth(距离滚动条顶部scrollTop)

一般无滚动条情况下offsetWidth=clientWidth=scrollWidth(有可能误差1px)

IE浏览器兼容写法:

  document.body.scrollTop

  document.body.offsetWidth

  document.body.clientHeight

Chrome浏览器兼容写法:

  var scrolltop = document.documentElement.scrollTop   /*获取滚动条距离顶部得距离*/

  var clientHeight = document.documentElement.clientHeight; /*获取页面可视区的高度*/

  var offset = document.documentElement.offsetWidth;  /*获取页面可视区的高度,包含border*/

 

js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:

  • event.clientX/Y   /*相对于浏览器窗口*/
  • event.pageX/Y  
  • event.offsetX/Y
  • event.layerX/Y
  • event.screenX/Y      /*相对于屏幕*/

clientX/Y

clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变。
兼容性:所有浏览器均支持

pageX/Y

pageX/Y获取到的是触发点相对文档区域左上角距离,会随着页面滚动而改变
兼容性:除IE6/7/8不支持外,其余浏览器均支持

offsetX/Y

offsetX/Y获取到是触发点相对被触发dom的左上角距离,不过左上角基准点在不同浏览器中有区别,其中在IE中以内容区左上角为基准点不包括边框,如果触发点在边框上会返回负值,而chrome中以边框左上角为基准点。

兼容性:IE所有版本,chrome,Safari均完美支持,Firefox不支持

layerX/Y

layerX/Y获取到的是触发点相对被触发dom左上角的距离,数值与offsetX/Y相同,这个变量就是firefox用来替代offsetX/Y的,基准点为边框左上角,但是有个条件就是,被触发的dom需要设置为position:relative或者position:absolute,否则会返回相对html文档区域左上角的距离。

兼容性:IE6/7/8不支持,opera不支持,IE9/10和Chrome、Safari均支持

screenX/Y

screenX/Y获取到的是触发点相对显示器屏幕左上角的距离,不随页面滚动而改变。
兼容性:所有浏览器均支持

function getMouseMove(event) {
var e = event || window.event;

  console.log(e.clientX);
}
如果想了解移动触摸坐标属性详细请看我的另一篇文章

Js获取宽高度的归纳集锦总结的更多相关文章

  1. Js获取宽高度的归纳总结

    首先,先吓唬一下我们的小白们!在js中的描述宽高的可以细分有22种. window.innerWidth //除去菜单栏的窗口宽度 window.innerHeight//除去菜单栏的窗口高度 win ...

  2. js获取浏览器高度和宽度值,尽量的考虑了多浏览器。

    js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ...

  3. jquery、js获取页面高度宽度等

    jquery获取页面高度宽度 //获取浏览器显示区域(可视区域)的高度 : $(window).height(); //获取浏览器显示区域(可视区域)的宽度 : $(window).width(); ...

  4. 【转】js 获取浏览器高度和宽度值(多浏览器

    原文地址:http://www.jb51.net/article/19844.htm js获取浏览器高度和宽度值,尽量的考虑了多浏览器. IE中: document.body.clientWidth ...

  5. JS获取div高度的方法

    有时在写页面时,需要获取一个div的高度.怎么才能获取呢?哈哈,先上结论.有两种方法. offsetHeight .clientHeight getComputedStyle offsetHeight ...

  6. js获取浏览器高度

    常用: JS 获取浏览器窗口大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 获取窗口宽度 if (window.innerWidth) winWidth = ...

  7. JS获取浏览器高度 并赋值给类

    在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ...

  8. 原生js获取宽高与jquery获取宽高的方法的关系

    说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况.  2.以下所说的所有方法与属性所返回的值都是不带单位的.  3.为了方便说明,以下情况采用缩写表示:  obj -> ...

  9. js 获取浏览器高度和宽度值(多浏览器)(转)

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

随机推荐

  1. Linux开机启动过程(个人理解)

    简述Linux启动过程 1)BIOS开机自检 2)MBR引导 3)启动引导程序菜单(GRUB) 4)加载内核 5)加载虚拟文件系统加载函数模块 6)启动系统进程 /sbin/init --->/ ...

  2. DAX 第八篇:表连接

    表连接是指两张表根据关联字段,组合成一个数据集.表连接不仅可以利用数据模型中已有的关系,而且可以利用DAX表达式基于表的任意列定义连接条件.因此,在DAX中,实现表与表之间的连接,有两种方式: 第一种 ...

  3. Google工程师亲授 Tensorflow2.0-入门到进阶

    第1章 Tensorfow简介与环境搭建 本门课程的入门章节,简要介绍了tensorflow是什么,详细介绍了Tensorflow历史版本变迁以及tensorflow的架构和强大特性.并在Tensor ...

  4. 使用Quarkus在Openshift上构建微服务的快速指南

    在我的博客上,您有机会阅读了许多关于使用Spring Boot或Micronaut之类框架构建微服务的文章.这里将介绍另一个非常有趣的框架专门用于微服务体系结构,它越来越受到大家的关注– Quarku ...

  5. 选择正确的 Fragment#commitXXX() 函数

    转自: http://www.tuicool.com/articles/q6R7nii 最新版本(v24.0.0)的 Support v4 库中的 FragmentTransaction 添加了 co ...

  6. Graph and Chart Study

    1.选择主题 “Themes”,以"Graph"——“preset7” 为例: 2.选择“Canvas”——“GraphChart”预制体,1.Set data categorie ...

  7. IntelliJ IDEA远程连接tomcat,实现单步调试

    web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是Intellij idea,可以通过如下方法实现: 开启debug端口,启动tomcat 以tomcat7.0.75为例,打开bi ...

  8. sql注入(从入门到进阶)

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  9. thinkphp6 常用方法文档

    请求变量 use think\facade\Request; Request::param('name'); Request::param();全部请求变量 返回数组 Request::param([ ...

  10. ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介

    参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...