JS中client/offset/scroll等的宽高解析

原文地址:→传送门
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.width和window.screen.height
注:在获取值时可不加window.前缀
- window.screen.width声明了显示当前浏览器的
屏幕的宽度,以像素计 - window.screen.height声明了显示当前浏览器的
屏幕的高度,以像素计

参考链接:
window.screen - MDN
window.screen - MDN
4. window.screen.availHeight和window.screen.availWidth
- window.screen.availHeight声明了显示浏览器的
屏幕的可用高度,以像素计。除去我们底部任务栏外的屏幕高度 - window.screen.availWidth声明了显示浏览器的
屏幕的可用宽度,以像素计
参考链接:
window.screen - MDN
window.screen - MDN
5. window.screenTop和window.screenLeft
- 功能: 返回窗口的左上角在屏幕上的x坐标。该属性为只读属性。语法: window.screenLeft。注:在Firefox等浏览器中使用的是screenX属性。
- 返回窗口的左上角在屏幕上的y坐标。该属性为只读属性。 语法: window.screenTop。注:在Firefox等浏览器中使用的是screenY属性。

参考链接:
window.screenTop
window.screenLeft
document下面的相关属性(offset/client/scroll)
与client相关属性
6. document.body.clientWidth或element.clientWidth
- 表示元素的内部宽度,以像素计。该属性包括内边距,但不包括垂直滚动条(如果有的话)、边框和外边距。
- 该属性值会被四舍五入为一个整数。如果你需要一个小数值,可使用 element.getBoundingClientRect()。
- 语法:var intElemClientWidth = element.clientWidth;

参考链接:
Element.clientWidth - MDN
7. document.body.clientHeight或element.clientHeight
- 返回元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。
参考链接:
element.clientHeight - MDN
8. document.body.clientLeft或element.clientLeft
- 表示一个元素的左边框的宽度,以像素表示。如果元素的文本方向是从右向左(RTL, right-to-left),并且由于内容溢出导致左边出现了一个垂直滚动条,则该属性包括滚动条的宽度。

参考链接:
Element.clientLeft - MDN
9. document.body.clientTop或element.clientTop
- 一个元素顶部边框的宽度(以像素表示)。不包括顶部外边距或内边距。
参考链接:
Element.clientTop
与offset相关属性
这一对属性指的是元素的border+padding+content的宽度和高度
10. document.body.offsetWidth或element.offsetWidth
- border/padding/width三者的总宽度

参考链接:
HTMLElement.offsetWidth
11. document.body.offsetHeight或element.offsetHeight
- border/padding/width三者的总高度,且是一个整数。
参考链接:
HTMLElement.offsetHeight
12. HTMLElement.offsetLeft和HTMLElement.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.scrollWidth及document.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.scrollWidth和element.scrollHeight
- 当无滚动条时:
scrollWidth = clientWidth = 元素宽度 + padding和
scrollHeight = clientHeight = 元素高度 + padding和
- 当有滚动条时:
scrollWidth = 实际内容的宽度 + padding和
scrollHeight = 实际内容的高度 + padding和
15. document.body.scrollTop及document.body.scrollLeft
- 这对属性是可读写(可被重新赋值) 的
- 指的是当元素其中的内容超出其宽高的时候,元素被卷起来的高和宽度。
- 对于element元素同样适用
16. window.scrollY及window.scrollX
- window.scrollY 文档从顶部开始滚动过的像素值 / window.scrollX 文档从左侧开始滚动的像素值。
event中的五种坐标
clientX及clientY:相对于浏览器(可视区左上角0,0)的坐标
screenX和screenY:相对于设备屏幕左上角(0,0)的坐标
offsetX和offsetY:相对于事件源左上角(0,0)的坐标
pageX和pageY:相对于整个网页左上角(0,0)的坐标
参考来源:
- 视频课程:JS/jQuery宽高的理解和应用
- 博客:JavaScript中的各种宽高属性
JS中client/offset/scroll等的宽高解析的更多相关文章
- JS中的offset scroll event client
一.offset 一般用来检测盒子的偏移.位移,都是只读属性,不能赋值 offsetWidth和offsetHeight表示的是:调用者盒子的宽和高,包括盒子自身的padding和border off ...
- DOM盒模型和位置 client offset scroll 和滚动的关系
DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...
- JS 中的offset、scroll、client总结
经常碰到offset.scroll.client这几个关键字,每次都要各种实验,这里总结一下. 两张图镇楼,随时翻阅 1. offset offset 指偏移,包括这个元素在文档中占用的所有显示宽度, ...
- js的client、scroll、offset详解与兼容性
clientWidth:可视区宽说明:样式宽+padding参考:js的client详解 scrollTop : 滚动条滚动距离说明:chrome下他会以为滚动条是文档元素的,所以需要做兼容:var ...
- 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.名词 ...
- JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装
知识点: 模拟滚动条的解除事件问题 : event内置对象,包含 了大量事件: page兼容性: pageX || clientX + scool().top : if (true === a)tr ...
- client,offset,scroll系列
client(客户端),offset(偏移),scroll(滚动)1.client系列 clientTop 内容区域到边框顶部的距离 ,说白了,就是边框的高度 clientLeft 内容区域到边框左部 ...
- client , offset , scroll 系列 及百度导航栏案例
1. client 系列 示例 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- client offset scroll 之间的区别
一.client 属性 值 clientWidth 元素被设置的宽度 + padding左右内间距 clientHeight 元素被设置的高度 + padding上下内间距 clientLeft 左 ...
随机推荐
- Java中的断言assert
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在J ...
- C++ Primer Plus学习:第八章
C++入门第八章:函数探幽 本章将介绍C++语言区别于C语言的新特性.包括内联函数.按引用传递变量.默认的参数值.函数重载以及函数模板. 1 C++内联函数 内联函数是C++为提高程序运行速度所做的一 ...
- 使用RStudio学习一个简单神经网络
数据准备 1.收集数据 UC Irvine Machine Learning Repository-Concrete Compressive Strength Data Set 把下载到的Concre ...
- Maven基本理解
转 maven(一) maven到底是个啥玩意~ 我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清楚,现在弄清楚了,基本上入门了.写该篇博文,就 ...
- php中ob缓存机制
1.ob缓存运行方式 2.注意:在程序中如果开启ob_start(),所有的echo输出都会保存到ob缓存中,可以使用ob系列函数进行操作,如果没有,默认情况下,在程序执行结束,会把缓存中的数据发送给 ...
- DBGRID控件里可以实现SHIFT复选吗?怎么设置?
////////////////////////////////////////////////// 功能概述:公用的列表框选择框,是用DBGrid网格//// 注意事项:希望用Query ...
- 【Quartz.Net】.net 下使用Quartz.Net
Quartz.net是作业调度框架 1. 项目中添加quartz.net的引用(这里使用nuget管理) 新建一个类TimingJob,该类主要用于实现任务逻辑 using Quartz; usi ...
- 整合SSM框架应用
普通方式 新建spring模块时引入如下内容: 启用devtools插件(热部署插件) idea需要做如下配置 settings-build-compiler->勾选build project ...
- uva1391-Astronauts
宇航员执行任务,有三个任务ABC.把宇航员按照平均年龄分成新老两组,老宇航员可以去AC,新宇航员可以取BC.宇航员之间有不能共存关系,问是否有合法的分配方案. 分析 虽然有三个任务,但每个宇航员还是只 ...
- (转)Nginx图片服务器
本文转至博客http://wenxin2009.iteye.com/blog/2117079 Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.h ...





