元素大小与位置

188 阅读2分钟

元素大小与位置

scroll家族

获取宽高

获取元素的内容总宽高(内容 + padding)返回值不带单位

scrollWidth:可以获取元素的宽度(内容 + padding),不包含滚动条和边框

scrollHeight:可以获取元素的高度(内容 + padding),不包含滚动条和边框

获取位置

获取元素内容往左、往上滚出去看不到的距离

scrollTop:获取垂直方向,被卷去头部距离

scrollLeft:获取水平方向,被卷去头部距离

可以读取,也可以修改(赋值)

// 获取垂直方向页面滚动出屏幕的距离
// html 元素 === document.documentElement
let offset = document.documentElement.scrollTop

offset家族

获取宽高

获取元素的自身宽高,包含元素自身设置的宽高,padding,border

offsetWidth:获取的宽度包含:内容 + padding + border

offsetHeight:获取的高度包含:内容 + padding + border

注:获取的是可视宽高,如果盒子是隐藏的,获取的结果是0

获取位置

获取元素距离自己定位父级元素的左、上距离

offsetLeft:当前元素相对于定准父容器的左侧距离

offsetTop:当前元素相对于定准父容器的上侧距离

注:获取出来的数值是只读属性,只能使用,不能设置

如果父容器没有定位,就参照最近的定位父容器,如果所有都没有定位,就参照文档

client家族

获取宽高

获取元素的可见部分宽高(不包含边框,滚动条等)

clientWidth:内容 + pidding , 不包含上边框和滚动条,只能获取可视区域的距离

clientHeight:内容 + pidding , 不包含上边框和滚动条,只能获取可视区域的距离

获取位置

clientLeft:左边框的宽度

clientTop:顶部边框的宽度

是只读属性

resize事件

// 当调整浏览器窗口的大小时,会触发事件
// 检测屏幕的宽度
window.addEventListener('resize',function(){
      let w = document.documentElement.clientWidth
      console.log(w);
})
js方式实现当屏幕宽度到达某个值时实现的某种样式
// 入口函数
window.addEventListener('load', function () {
  window.addEventListener('resize', function () {
    // 原始body背景颜色为红色
    document.body.style.backgroundColor = 'red'
    // 检测屏幕宽度
    let width = document.documentElement.clientWidth
    // 当宽度大于768时,body背景颜色为绿色
    if (width > 768) {
      document.body.style.backgroundColor = 'green'
    }
    // 当宽度大于992时,body背景颜色为蓝色
    if (width > 992) {
      document.body.style.backgroundColor = 'blue'
    }
    // 当宽度大于1200时,body背景颜色为黑色
    if (width > 1200) {
      document.body.style.backgroundColor = 'black'
    }
  })
})