Element的各种宽度长度滚动值属性

2020-05-13  本文已影响0人  darkTi

一、Element.clientHeight,Element.clientWidth (不包括border的宽度!!)

// 视口高度
document.documentElement.clientHeight

// 网页总高度
document.body.clientHeight

二、Element.clientLeft,Element.clientTop(就是左边框和上边框的宽度)

三、Element.scrollHeight,Element.scrollWidth(只读)

// 返回网页的总高度
document.documentElement.scrollHeight
document.body.scrollHeight

scrollHeight与clientHeight的区别在于,如果一个元素有伪元素(::before或::after),那么scrollHeight的高度不仅包含元素自身的高度(不包括元素的border和margin),还包括伪元素整体的高度(包括border和margin,当然是伪元素布局在元素外的情况下)
所以一旦元素的高度超过视口高度时,最好用scrollHeight来获取元素的整体高度;

四、Element.scrollLeft,Element.scrollTop(可读写)

document.documentElement.scrollLeft
document.documentElement.scrollTop //整个网页垂直滚动的高度

这两个属性都可读写,设置该属性的值,会导致浏览器将当前元素自动滚动到相应的位置。

这里再介绍下window.scrollX和window.scrollY

  • window.scrollX:以像素为单位,返回水平轴上document已经被卷去的宽度 number类型;(等同于document.documentElement.scrollLeft
  • window.scrollY:以像素为单位,返回垂直方向上document被卷曲的高度 number类型;(等同于document.documentElement.scrollTop
  • pageYOffset 属性是 scrollY 属性的别名,pageXOffset同理,为了跨浏览器兼容,一般用后者(pageYOffset、pageXOffset)
  • 当网页有滚动条的时候,document.documentElement.scrollHeight = document.documentElement.clientHeight + document.documentElement.scrollTop
  • 当网页没有滚动条的时候,document.documentElement.scrollHeight = document.documentElement.clientHeight

五、Element.offsetParent

<div style="position: absolute;">
  <p>
    <span>Hello</span>
  </p>
</div>

上面代码中,span元素的offsetParent属性就是div元素。
该属性主要用于确定子元素位置偏移的计算基准,Element.offsetTop和Element.offsetLeft就是offsetParent元素计算的。

<div style="position: absolute;">
  <p>
    <span style="display: none;">Hello</span>
  </p>
</div>

上面代码中,span元素的offsetParent属性是null。

六、Element.offsetHeight,Element.offsetWidth(只读)

七、Element.offsetLeft,Element.offsetTop

function getElementPosition(e) {
  var x = 0;
  var y = 0;
  while (e !== null)  {
    x += e.offsetLeft;
    y += e.offsetTop;
    e = e.offsetParent;
  }
  return {x: x, y: y};
}

八、Element.getBoundingClientRect()

var rect = obj.getBoundingClientRect()

上面代码中,getBoundingClientRect方法返回的rect对象,具有以下属性(全部为只读)。
①x:元素左上角相对于视口的横坐标;
②y:元素左上角相对于视口的纵坐标;
③height:元素高度;
④width:元素宽度;
⑤left:元素左上角相对于视口的横坐标,与x属性相等;
⑥right:元素右边界相对于视口的横坐标(等于x + width);
⑦top:元素顶部相对于视口的纵坐标,与y属性相等;
⑧bottom:元素底部相对于视口的纵坐标(等于y + height);

上一篇 下一篇

猜你喜欢

热点阅读