可读写行间样式,没有兼容性问题。
dom.style返回一个CSSStyleDeclaration类数组对象,其中存放了该元素节点的行间CSS属性,且可读写。
DOM可操作元素的属性,同样可以操作元素的style属性,即可通过改变行间样式表来改变元素样式。写入的值必须是字符串格式。
由于这种方式读写的是元素的行间样式,因此元素的内部和外部样式表的样式声明是读不到的;
遇到float这种保留字属性,float在其他语言中是浮点数类型的含义,为了符合W3C标准,前面应加css,例如float应写作cssFloat。
建议复合属性拆解,例如border属性就是一个复合属性,包含border-left,border-top等,建议分开设置。例如div.style.border="2px solid black";,要分开书写div.style.borderWidth="2px";,div.style.borderStyle="solid;",div.style.borderColor="balck";。
组合单词变成小驼峰式写法。例如background-color必须写成backgroundColor。
返回的也是CSSStyleDeclaration类数组对象,存取的是当前CSS属性的显示值,即最终层叠计算出来的属性值。而且计算样式是只读的,不能修改getComputedStyle()方法返回的对象。
不同于style,getComputedStyle()获取的是经过层叠计算而出的属性值,style获取的只是行间样式表的属性。
getComputedStyle()接收两个参数,要取得计算样式的元素和伪元素字符串(如"after"/“:after”/“::after”)。若不需要查询伪元素,则第二个参数可以传null。
getComputedStyle()返回的是对象,因此可以进一步查询对象中的具体属性,如
<div id="myDiv" style="width:100px; height:100px; background-color:red; color:#fff;">div>
<script>
let div = document.getElementById("myDiv");
let computedStyle = window.getComputedStyle(div, null);
console.log(computedStyle.width);
console.log(window.getComputedStyle(div, null).color);
script>
返回额计算样式都是绝对值,没有相对单位。对于长度,计算样式返回的是转换后以px像素值为单位的值;对于颜色,计算样式返回的是rgb的形式,比如颜色为red,则返回的是"rgb(255,0,0)"。
IE8以及IE8以下不兼容。
在IE8以及IE8以下的浏览器中,使用ele.currentStyle代替window.getComputedStyle(ele, null)。
计算样式只读。
返回的计算样式值不是经过转换的绝对值。
IE独有的属性。
function getStyle(elem, prop){
if(window.getComputedStyle){
return window.getComputedStyle(elem, null)[prop];
} else {
return elem.currentStyle[prop];
}
}