获取方法
一、element.style 属性
获取dom元素的style属性
例子:
1 | // index.html |
这种方式可获取,也可修改值。优点是兼容性比较好。缺点是有局限性,只能通过写入内联才能获取样式。
二、element.currentStyle 属性
只支持IE6~8…..
三、window.getComputedStyle(element) 方法
getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值也可以获取伪类中的属性。返回的是一个CSS样式声明对象([object CSSStyleDeclaration]),只读。文章‘获取元素CSS值之getComputedStyle方法熟悉’
支持IE8以上
例子:
1 | var el = document.getElementById('el') |
jQuery的CSS()方法就是用此方法的,
四、element.getBoundingClientRect()方法
1 |
|
相关用法文章:
小tips: 滚动容器尺寸变化子元素视觉上位置不变JS实现
获取宽度的方法总结
content-box:
兼容性 | 方法 |
---|---|
IE5.5+ | element.style.width |
IE6~8 | element.currentStyle.width |
IE8以上 | window.getComputedStyle(element).getPropertyValue(‘width’) |
IE8以上 | element.getBoundingClientRect().width |
padding-box:
兼容性 | 方法 |
---|---|
IE5.5+ | element.clientWidth |
IE5.5+ | element.scrollWidth |
border-box:
兼容性 | 方法 |
---|---|
IE5.5+ | element.offsetWidth |
margin-box:
没有原生接口直接获取
计算方法:
1、获取元素padding-box宽度
2、获取元素margin-left和margin-right大小
3、三个数值相加
例子:1
2
3
4
5var box = document.querySelector('.box')
var paddingWidth = box.clientWidth;
var marginLeft = +window.getComputedStyle(box).getPropertyValue('margin-left').match(/^\d*/)[0]
var marginRight = +window.getComputedStyle(box).getPropertyValue('margin-right').match(/^\d*/)[0]
var res = paddingWidth + marginLeft + marginRight
jQuery api:
盒子范围 | 方法 |
---|---|
content-box | $().width() |
padding-box | $().innerWidth() |
border-box | $().outerWidth() |
margin-box | $().outerWidth(true) |