28、JavaScript学习笔记——脚本化CSS

脚本化CSS

1. 读写元素CSS属性

1.1 dom.style.prop

可读写行间样式,没有兼容性问题。

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

2. 读CSS计算属性

2.1 window.getComputedStyle(eleDom, 伪元素字符串/null)

返回的也是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以下不兼容。

2.2 currentStyle

在IE8以及IE8以下的浏览器中,使用ele.currentStyle代替window.getComputedStyle(ele, null)

计算样式只读。

返回的计算样式值不是经过转换的绝对值

IE独有的属性。

2.3 封装获取计算属性的函数,解决兼容性问题

function getStyle(elem, prop){
    if(window.getComputedStyle){
        return window.getComputedStyle(elem, null)[prop];
    } else {
        return elem.currentStyle[prop];
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值