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 左 ...
随机推荐
- 线段树---成段更新hdu1698 Just a Hook
hdu1698 Just a Hook 题意:O(-1) 思路:O(-1) 线段树功能:update:成段替换 (由于只query一次总区间,所以可以直接输出1结点的信息) 题意:给一组棍子染色,不同 ...
- whu Problem 1537 - A - Stones I 贪心
题目链接: http://acm.whu.edu.cn/land/problem/detail?problem_id=1537 Stones I Time Limit: 1000MSMemory Li ...
- Codeforces Round #245 (Div. 1) B. Working out dp
题目链接: http://codeforces.com/contest/429/problem/B B. Working out time limit per test2 secondsmemory ...
- SpringBoot与Swagger2整合
一.Swagger简介与优势 相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还为了以后交接方便,都有要求写API文档. Swa ...
- iOS- Swift和Object-C的混合编程
1.前言 事实证明,在短时间内Swift还取代不了Object-C, 而且.... Apple Swift 开发小组的人说的:「We'll recommend people start with ...
- keepalived 高可用(IP飘移)
什么是keepalived? keepalived是一个在c中编写的路由软件,该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单和强大的设备,用于loadbalance和高可用性.l ...
- 团队作业05——测试与发布(alpha阶段)
测试 请根据团队项目中软件的需求文档.功能说明.系统设计和测试计划,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? 显示计算结果超过看 ...
- Hbase的安装和配置
1,准备好hbase的linux环境下的压缩包,这里hadoop版本为hadoop2.5.0,hbase版本为 2,解压缩这个版本,不选src的,其实两个任一都行 进入到hbase安装包目录,我这里的 ...
- php自带的filter过滤函数
PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤. filter_has_var()检查是否存在指定输入类型的变量. filter_id()返回指定过滤器的 ID 号. filt ...
- PHP内置标准类
PHP内置标准类 php语言内部,有“很多现成的类”,其中有一个,被称为“内置标准类”. 这个类“内部”可以认为什么都没有,类似这样: class stdclass{ } 其作用,可以用于存储一些临 ...