美文网首页WEB前端程序开发程序员
关于DOM2级CSS样式的一些小知识

关于DOM2级CSS样式的一些小知识

作者: FeRookie | 来源:发表于2017-03-16 23:48 被阅读0次

    网上不是有这么个段子嘛:可怕的是,比你聪明的人比你更勤奋。那么,这里的“勤奋”的差异体现在什么地方呢?就拿这个getComputedStyle举例:懒惰青年是看一下,立马像看见凤姐一样视线离开;普通青年是看一下,发现自己不了解,百一下或谷一下,熟悉了解之;勤奋青年是不仅了解,还抽出时间实践之(如做个简单demo测试),熟悉方法的特异性,验证一些观点正确性。 ---来自张鑫旭博客里面的一段。

    逛着博客看到大神张鑫旭的博客里面有以上这一段话,然后看看手中的JS高程这本书,发现我也得总结一些什么吧...虽然有的内容在日常开发中用不到,但是一些框架的底层中却有可能使用到了。

    在HTML中定义样式有三种方法:外部样式表,嵌入样式表,内联样式。在DOM2级样式中围绕这三种方式提供了一套API。首先要知道新的东西在各种版本的浏览器上是会存在兼容性问题。所以提供一种检测浏览器是否支持DOM2级别的CSS能力:

    var support = document.implementation.hasFeature('CSS', '2.0') //返回true或者false
    
    一、访问元素的样式

    任何支持style特性的HTML元素都有对应的一个style属性,这个style属性是一个CSSStyleDeclaration的实例。这个属性只包含元素所有通过style特性设置的样式信息。

    注意:float属性在JavaScript中是一个关键字,所以我们需要用另一种形式表现,在IE中是通过styleFloat表示,其他浏览器中是通过cssFloat表示。
    

    通过style属性设置样式的同时也是动态的改变元素的外观。在标准模式下度量值都是需要设置单位,在混杂模式下不一定需要,所以我们建议都指定度量单位。

    • DOM样式属性和方法

    在DOM2规范中为style对象定义了一些属性和方法。
    1.cssText:可以通过这个属性访问style特性中的css代码。也可以通过它进行设置样式代码;

    obj.style.cssText='width:100px;height:100px' 
    可以看到这个属性可以一次设置多个样式,这样比一个个设置方便了很多
    

    2.length:表示应用给元素CSS属性的数量(只计算style特性中的长度)
    3.parentRule:表示cssRule对象。
    4.getPropertyCssValue(propertyName):返回包含指定属性值得cssValue对象。(在chrome下报错没有这个方法)
    5.getPropertyValue(propertyName):返回给定属性的字符串值。(只返回style特性中的样式)
    6.item(index):返回指定位置的Css属性名称。
    7.removeProperty(propertyName):从样式特性中删除指定属性。
    8.setProperty(property, value, priority):将给定属性设置为相应的值,并加上优先权标志。

    注意:
    1.cssText可以返回style特性中css代码的内部表示,可以设置style特性的值,不过这个设置会覆盖它已有的style的值。
    2.getPropertyCssValue会返回包含两个cssValue对象,这两个属性分别是cssText和cssValueType,cssText返回的就是样式的值,但是cssValueType返回的是一个数量值,0表示是继承而来的,1表示是基本的值,2表示值列表,3表示自定义的值。
    
    • 计算的样式

    这里要介绍两个计算样式的属性方法:

    1. getComputedStyle()方法:
      该方法接受两个参数,第一,要取得样式的元素,第二,设置为null就可以了。该方法返回的是一个CSSStyleDeclaration对象,和style属性的类型相同。
    格式:
    document.defaultView.getComputedStyle(element, null)[cssAttr]
    window.getComputedStyle(element, null)[cssAttr]
    eg:
    document.defaultView.getComputedStyle(div, null)['height']
    window.getComputedStyle(div, null)['height'] 
    

    实际上,使用defaultView
    基本上是没有必要的,getComputedStyle
    本身就存在window
    对象之中。根据DennisHall的说法,使用defaultView
    可能一是人们不太乐意在window上专门写个东西,二是让API在Java中也可用(这我不懂,忘指点~~)。---来自张鑫旭

    2.currentStyle属性
    在IE中不支持上面的方法,该属性也是CSSStyleDeclaration的一个实例,包含当前元素所有计算过的属性。

    使用方法
    obj.currentStyle['height']
    

    相关文章

      网友评论

        本文标题:关于DOM2级CSS样式的一些小知识

        本文链接:https://www.haomeiwen.com/subject/deesnttx.html