1.盒子模型box-sizing
box-sizing:content-box(传统盒子模型:默认)
box-sizing:border-box 设置border-box后,我们写的width/height不再是内容的宽高,而是content+padding+border的最总大小
2.盒子模型属性
2.1 client系列
2.1.1 clientWidth/clientHeight
获取盒子可视区域宽高,(内容+padding)内容溢出与否无影响,获取的结果没有单位,获取的结果是整数
//获取当前页面一屏幕(可视化)区域的宽高
let winWidth = document.documentElement.clientWidth || document.body.clientWidth;
let winHeight = document.documentElement.clientHeight || document.body.clientHeight;
2.1.2 clientTop/clientLeft
获取盒子上边框和左边框的大小
2.2 offset系列
2.2.1 offsetWidth/offsetHeight
在client的基础上加上border(内容+padding+border)
2.2.2 offsetTop/offsetLeft
offsetTop:距离其父参照物的上偏移
offsetLeft:距离其父参照物的左偏移
2.2.3 offsetParent父参照物
判断offsetParent父参照物的方法:
- 元素自身有fixed定位,offsetParent结果为null
- 元素自身无fixed定位,且父级元素都未经过定位,offsetParent结果为body
- 元素自身无fixed定位,且父级元素存在经过定位的元素,offsetParent的结果为离自身元素最近的经过定位的父级元素
- body元素的offsetParent为null
2.3 scroll系列
2.3.1 scrollWidth/scrollHeight
在没有内容溢出的情况下获取的结果和clientWidth/clientHeight是一样的。
有溢出的情况下,获取的宽/高为实际的宽/高
2.3.2 scrollTop/scrollLeft
竖向滚动条卷去的高度
横向滚动条卷起的宽度
边界值:
min = 0
max = 整个高度scrollHeight - 屏幕高度clientHeight
scrollTop/scrollLeft为可读写属性
//回到顶部
document.documentElement.scrollTop = 0
//回到底部
document.documentElement.scrollTop = document.documentElement.scrollHeight - document.documentElement.clientHeight