【JS】JS中的DOM操作2,JS盒子模型属性,client、offset、scroll系列(获取元素的样式)

247 阅读3分钟

JS盒子模型属性

基于一些属性和方法,让我们能够获取到元素的样式信息,例如:clientWidth、offsetWidth等

属性:

  • client

    • width / height
    • top / left
  • offset

    • width / height
    • top / left
    • parent
  • scroll

    • width / height
    • top / left

注: 方法组合到一起的时候,注意驼峰命名法,后面的词首字母要大写

方法:

window.getComputedStyle([ELEMENT],(伪类)) / [ELEMENT] .currentStyle


注: 所有的DOM操作的属性和方法,在jQuery中都有对应的属性和方法。

client系列

let box = document.getElementById('box');

//=> 获取盒子可视区域的宽高(内容宽高+padding)
box.clientWidth  //=>  内容宽度+左右padding
box.clientHeight  //=> 内容高度+上下padding

注意:

1.即使内容有溢出,也不会影响clientWidth 和 clientHeight 得到的宽高,因为得到的是可视区域的宽高,溢出的内容看不到了

2.获取的结果是没有单位的(其余的盒模型属性也是)

3.获取的结果是整数,它会自己进行四舍五入(其余的盒模型属性也是),滚动条属性有小数

//获取当前页面一屏幕的(可视化)区域的宽高
let winW = document.documentElement.clientWidth || document.body.clientWidth;
let winH = document.documentElement.clientHeight || document.body.clientHeight;
//获取盒子左边框和上边框的大小
box.clientLeft
box.clientTop

offset系列

// 获取当前盒子的总宽高(在client的基础之上加上border)
  offsetWidth ==> 宽度(width) + 左右的padding + 左右的border
  offsetHeight ==> 高度(width) + 上下的padding + 上下的border
offsetLeft  offsetTop
获取当前盒子距离父级参照物的左上偏移量
获取的是当前参照物的外边框到父级参照物的内边框的距离(除IE浏览器以外,IE是外边框到外边框)

offsetParent =>获取当前盒子的父级参照物(当前盒子的所有父元素中,谁有position定位,那他的父级参照物就是谁)

//如果父级元素里面没有position定位,默认的父级参照物是body

scroll系列

 // 获取当前盒子真实的宽度和高度
 scrollHeight ==>在没有溢出的情况下,和clientHeight是一样的,但是在溢出的情况下约等于上padding+盒子的真实高度
 scrollWidth ==>在没有溢出的情况下,和clientHeight是一样的,但是在溢出的情况下约等于左padding+真实盒子的宽度
box.scrollTop  当前盒子滚动条纵向卷去的距离(上面看不到的内容的高度)
box.srollLeft  当前盒子滚动条横向卷去的距离
//只有这两个属性既可以获取,也可以设置
//将scrollTop 设置为0,滚动条就回到顶部了

getComputedStyle/ele.currentStyle

getComputedStyle

1)在js中获取元素的CSS样式

2)只要元素在页面中呈现出来的样式,当前的样式就是元素计算出来的样式,而getComputedStyle获取的就是计算之后的样式

3)只能获取,不能设置样式

4)在ie浏览器下不能使用,注意兼容性

5)如果有符合样式,名字要遵循驼峰命名法

注: 目前还不能用js设置CSS里面的样式,js只能用来设置行内样式(写在标签内部的样式)

用法: getComputedStyle(ele,伪类)

返回值是一个对象

注意:

在IE下要使用ele.currentStyle,这是一个属性,返回值是一个对象

box.currentStyle.width  //获取 box 的宽度