头部背景图片
小畅的学习笔记 |
小畅的学习笔记 |

获取页面的宽度和高度

1. clientHeight clientWidth

元素的像素高度,包含元素的高度+内边距,不包含水平滚动条,边框和外边距。

包括padding但不包括border、水平滚动条、margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。

Image1.png

2. offsetHeight offsetWidth

元素的像素高度 包含元素的垂直内边距和边框,水平滚动条的高度,且是一个整数

包括padding、border、水平滚动条,但不包括margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。

Image2.png

3. scrollHeight scrollWidth

元素内容的高度,包括溢出的不可见内容

而可见部分的高度其实就是clientHeight,也就是scrollHeight>=clientHeight恒成立。在有滚动条时讨论scrollHeight才有意义,在没有滚动条时scrollHeight==clientHeight恒成立。单位px,只读元素。

Image3.png

4. scrollTop

代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。在没有滚动条时scrollTop==0恒成立。单位px,可读可设置。

Image4.png

5. offsetTop

当前元素顶部距离最近父元素顶部的距离,和有没有滚动条没有关系。单位px,只读元素。

Image5.png

注意点:

  1. 对块级元素来说,offsetTop、offsetLeft、offsetWidth 及 offsetHeight 描述了元素相对于 offsetParent 的边界框。但是文本框不是如此.文本框的offsetLeft和offsetTop是第一个文本框的左偏移和上偏移.
  2. offsetParent元素指改元素的定位元素以及最近的table,td,th,body.可见,offsetParent和position属性的包含块概念类似.大部分场景下可以通用.
  3. offsetTop和offsetLeft都是相对于其内边距边界的.

offsetLeft和left属性的区别:

  1. position为fixed时值不同当position为fixed的时候,offsetLeft的值将会是null,而left此时一般有确定的数字值.
  2. 相对边距不同offerset的是相对于offsetParent的内边距边界,left是相对于包含块的外边距边界.
  3. 包含块有区别offerset相对与定位的祖先元素或者 table/td/th/body等祖先元素,left仅仅是相对于定位祖先元素+body

clientHeight与offsetHeight的区别:

clientHeight仅仅包含内边距+高度,offsetHeight包含内边距+滚动条+边框
所以可以这样说: clientHeight+滚动条高度+边框 = offsetHeight

Image6.png

Javascript:

网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

JQuery:

$(document).ready(function(){alert($(window).height()); //浏览器当前窗口可视区域高度
alert($(document).height()); //浏览器当前窗口文档的高度
alert($(document.body).height());//浏览器当前窗口文档body的高度
alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin
alert($(window).width()); //浏览器当前窗口可视区域宽度
alert($(document).width());//浏览器当前窗口文档对象宽度
alert($(document.body).width());//浏览器当前窗口文档body的宽度
alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin})
Lililich's Blog