原文地址:→传送门

window相关宽高属性

1. window.outerHeight (窗口的外层的高度) / window.outerWidth (窗口的外层的宽度)
  • window.outerHeight获取整个浏览器窗口的高度(单位:像素),包括侧边栏(如果存在)、窗口镶边(window chrome)和窗口调正边框。包含调试窗及浏览器边框
  • window.outerWidth表示整个浏览器窗口的宽度,包括侧边栏(如果存在)、窗口镶边(window chrome)和调正窗口大小的边框。包含调试窗及浏览器边框

参考链接:

window.outerHeight -MDN

window.outerWidth-MDN

2. window.innerHeight (浏览器窗口的视口的高度)和 window.innerWidth
  • window.innerHeight浏览器窗口的视口(viewport)高度(以像素为单位),如果存在水平滚动条,则包括它。不包含调试窗及浏览器边框
  • window.innerWidth浏览器视口(viewport)宽度(单位:像素),如果存在垂直滚动条则包括它。不包含调试窗及浏览器边框

参考链接:

window.innerHeight - MDN

window.innerWidth - MDN

3. window.screen.widthwindow.screen.height

注:在获取值时可不加window.前缀

  • window.screen.width声明了显示当前浏览器的屏幕的宽度,以像素计
  • window.screen.height声明了显示当前浏览器的屏幕的高度,以像素计

参考链接:

window.screen - MDN

window.screen - MDN

4. window.screen.availHeightwindow.screen.availWidth
  • window.screen.availHeight声明了显示浏览器的屏幕的可用高度,以像素计。除去我们底部任务栏外的屏幕高度
  • window.screen.availWidth声明了显示浏览器的屏幕的可用宽度,以像素计

参考链接:

window.screen - MDN

window.screen - MDN

5. window.screenTopwindow.screenLeft
  • 功能: 返回窗口的左上角在屏幕上的x坐标。该属性为只读属性。语法: window.screenLeft。注:在Firefox等浏览器中使用的是screenX属性。
  • 返回窗口的左上角在屏幕上的y坐标。该属性为只读属性。 语法: window.screenTop。注:在Firefox等浏览器中使用的是screenY属性。

参考链接:

window.screenTop

window.screenLeft

document下面的相关属性(offset/client/scroll)

与client相关属性

6. document.body.clientWidthelement.clientWidth
  • 表示元素的内部宽度,以像素计。该属性包括内边距,但不包括垂直滚动条(如果有的话)、边框和外边距。
  • 该属性值会被四舍五入为一个整数。如果你需要一个小数值,可使用 element.getBoundingClientRect()。
  • 语法:var intElemClientWidth = element.clientWidth;

参考链接:

Element.clientWidth - MDN

7. document.body.clientHeightelement.clientHeight
  • 返回元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。

参考链接:

element.clientHeight - MDN

8. document.body.clientLeftelement.clientLeft
  • 表示一个元素的左边框的宽度,以像素表示。如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。

参考链接:

Element.clientLeft - MDN

9. document.body.clientTopelement.clientTop
  • 一个元素顶部边框的宽度(以像素表示)。不包括顶部外边距或内边距。

参考链接:

Element.clientTop

与offset相关属性

这一对属性指的是元素的border+padding+content的宽度和高度

10. document.body.offsetWidthelement.offsetWidth
  • border/padding/width三者的总宽度

参考链接:

HTMLElement.offsetWidth

11. document.body.offsetHeightelement.offsetHeight
  • border/padding/width三者的总高度,且是一个整数。

参考链接:

HTMLElement.offsetHeight

12. HTMLElement.offsetLeftHTMLElement.offsetTop

这两个属性是基于offsetParent的

  • 如果当前元素的父级元素没有进行CSS定位(position为absolute或relative),offsetParent为body.
  • 假如当前元素的父级元素中有CSS定位,offsetParent取最近的那个父级元素。
  • offsetLeft返回当前元素左上角相对于 HTMLElement.offsetParent 节点的左边界偏移的像素值。
  • offsetTop返回当前元素相对于其 offsetParent 元素的顶部的距离。
  • 在IE6/7中:
offsetLeft=(offsetParent的padding-left)+(当前元素的margin-left)
  • 在IE8/9/10及Chrome中:
offsetLeft=(offsetParent的margin-left)+(offsetParent的border宽度)+(offsetParent的padding-left)+(当前元素的margin-left)
  • 在FireFox中:
offsetLeft=(offsetParent的margin-left)+(当前元素的margin-left)+(offsetParent的padding-left)

参考链接:

HTMLElement.offsetLeft

HTMLElement.offsetTop

与scroll相关属性

13. document.body.scrollWidthdocument.body.scrollHeight

body与普通element不一样

  • 给定body宽高 < 浏览器窗口时:
scrollWidth = 浏览器窗口宽度
scrollHeight = 浏览器窗口高度
  • 给定body宽高大于浏览器窗口,且内容小于给定body宽高时:
scrollWidth = 给定的宽度 + body所有padding + body所有margin + body所有border
scrollHeight = 给定的高度 + body所有padding + body所有margin + body所有border
  • 给定body宽高大于浏览器窗口,且内容大于给定窗口时:
scrollWidth = 内容的宽度 + body所有padding + body所有margin + body所有border
scrollHeight = 内容的高度 + body所有padding + body所有margin + body所有border

参考链接:

Element.scrollWidth

14. element.scrollWidthelement.scrollHeight
  • 当无滚动条时:
scrollWidth = clientWidth = 元素宽度 + padding和
scrollHeight = clientHeight = 元素高度 + padding和
  • 当有滚动条时:
scrollWidth = 实际内容的宽度 + padding和
scrollHeight = 实际内容的高度 + padding和
15. document.body.scrollTopdocument.body.scrollLeft
  • 这对属性是可读写(可被重新赋值) 的
  • 指的是当元素其中的内容超出其宽高的时候,元素被卷起来的高和宽度。
  • 对于element元素同样适用
16. window.scrollYwindow.scrollX
  • window.scrollY 文档从顶部开始滚动过的像素值 / window.scrollX 文档从左侧开始滚动的像素值。

event中的五种坐标

  1. clientXclientY:相对于浏览器(可视区左上角0,0)的坐标

  2. screenXscreenY:相对于设备屏幕左上角(0,0)的坐标

  3. offsetXoffsetY:相对于事件源左上角(0,0)的坐标

  4. pageXpageY:相对于整个网页左上角(0,0)的坐标

参考来源:

JS中client/offset/scroll等的宽高解析的更多相关文章

  1. JS中的offset scroll event client

    一.offset 一般用来检测盒子的偏移.位移,都是只读属性,不能赋值 offsetWidth和offsetHeight表示的是:调用者盒子的宽和高,包括盒子自身的padding和border off ...

  2. DOM盒模型和位置 client offset scroll 和滚动的关系

    DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...

  3. JS 中的offset、scroll、client总结

    经常碰到offset.scroll.client这几个关键字,每次都要各种实验,这里总结一下. 两张图镇楼,随时翻阅 1. offset offset 指偏移,包括这个元素在文档中占用的所有显示宽度, ...

  4. js的client、scroll、offset详解与兼容性

    clientWidth:可视区宽说明:样式宽+padding参考:js的client详解 scrollTop : 滚动条滚动距离说明:chrome下他会以为滚动条是文档元素的,所以需要做兼容:var ...

  5. JavaScript概念之screen/client/offset/scroll/inner/avail的width/left 分类: JavaScript HTML+CSS 2015-05-27 16:42 635人阅读 评论(0) 收藏

    原文地址:http://caibaojian.com/js-name.html JS中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词 ...

  6. JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装

    知识点: 模拟滚动条的解除事件问题 : event内置对象,包含 了大量事件: page兼容性: pageX || clientX + scool().top  : if (true === a)tr ...

  7. client,offset,scroll系列

    client(客户端),offset(偏移),scroll(滚动)1.client系列 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域到边框左部 ...

  8. client , offset , scroll 系列 及百度导航栏案例

    1. client 系列 示例 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  9. client offset scroll 之间的区别

    一.client 属性 值 clientWidth 元素被设置的宽度 + padding左右内间距 clientHeight 元素被设置的高度 + padding上下内间距 clientLeft 左 ...

随机推荐

  1. Java中的断言assert

    Java陷阱之assert关键字   一.概述   在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多.   二.语法   在J ...

  2. C++ Primer Plus学习:第八章

    C++入门第八章:函数探幽 本章将介绍C++语言区别于C语言的新特性.包括内联函数.按引用传递变量.默认的参数值.函数重载以及函数模板. 1 C++内联函数 内联函数是C++为提高程序运行速度所做的一 ...

  3. 使用RStudio学习一个简单神经网络

    数据准备 1.收集数据 UC Irvine Machine Learning Repository-Concrete Compressive Strength Data Set 把下载到的Concre ...

  4. Maven基本理解

    转 maven(一) maven到底是个啥玩意~ 我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了.写该篇博文,就 ...

  5. php中ob缓存机制

    1.ob缓存运行方式 2.注意:在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给 ...

  6. DBGRID控件里可以实现SHIFT复选吗?怎么设置?

    //////////////////////////////////////////////////    功能概述:公用的列表框选择框,是用DBGrid网格////    注意事项:希望用Query ...

  7. 【Quartz.Net】.net 下使用Quartz.Net

    Quartz.net是作业调度框架 1. 项目中添加quartz.net的引用(这里使用nuget管理) 新建一个类TimingJob,该类主要用于实现任务逻辑   using Quartz; usi ...

  8. 整合SSM框架应用

    普通方式 新建spring模块时引入如下内容: 启用devtools插件(热部署插件) idea需要做如下配置 settings-build-compiler->勾选build project ...

  9. uva1391-Astronauts

    宇航员执行任务,有三个任务ABC.把宇航员按照平均年龄分成新老两组,老宇航员可以去AC,新宇航员可以取BC.宇航员之间有不能共存关系,问是否有合法的分配方案. 分析 虽然有三个任务,但每个宇航员还是只 ...

  10. (转)Nginx图片服务器

    本文转至博客http://wenxin2009.iteye.com/blog/2117079 Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.h ...