获取元素的 CSS 属性
程序员文章站
2024-03-23 14:16:52
...
获取元素的 CSS 属性
(1)使用 HTMLElement.style.属性名
HTMLElement.style
属性返回一个 CSSStyleDeclaration
对象(只读),该对象包含元素的内联 style 属性(attribute),但忽略任何样式表的属性。
需要我们把元素的样式都写在行内样式上才可以(写在样式表中是不管用的)
console.log(ele.style.height);
- 设置 style 属性
因为CSSStyleDeclaration
对象是只读的,所以不能直接给 style 赋值:如:elt.style = "color: blue;"
;而应该通过单独的样式属性设置:如:elt.style.color = 'red'
;
- 该方法只能获取内嵌样式,如果要获取所有的 css 属性样式,应该使用
getComputedStyle
方法;
(2)使用 window.getComputedStyle
- 语法:
let style = window.getComputedStyle(element, [pseudoElt]);
或者:
let style = document.defaultView.getComputedStyle(element, [pseudoElt]);
关于这两种写法的区别:两种方式是一样的,只有一种情况,必须使用 defaultView,那是在
firefox3.6
*问子框架内的样式;
- 参数:
element:获取计算样式的元素;
pseudoElt(可选):指定一个要匹配的伪元素的字符串。必须对普通元素省略(或 null);
- 返回值:(只读)
返回的 style 是一个实时的 CSSStyleDeclaration
这个对象的实例,包含了当前元素的所有样式属性及其值;
当元素的样式更改时,该实例会自动更新;
console.log(window.getComputedStyle); //function
console.log(window.getComputedStyle(curEle, null))["height"];
兼容处理
- 兼容问题:
getComputedStyle
方法在 IE6-8 下是不兼容的,可以使用 currentStyle
来获取计算样式:
console.log(ele.currentStyle);
console.log(ele.currentStyle.height);
- 封装函数:
getCss
:获取当前元素所有经过浏览器计算过的样式中的[attr]对应的值
/*
*curEle:当前元素
*attr:属性
*/
function getCss(curEle, attr){
return curEle.currentstyle ?
curEle.currentstyle[attr] :
document.defaultView.getComputedStyle(curEle, null)[attr];
};