美文网首页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样式的一些小知识

    网上不是有这么个段子嘛:可怕的是,比你聪明的人比你更勤奋。那么,这里的“勤奋”的差异体现在什么地方呢?就拿这个ge...

  • $12 DOM2和DOM3

    1. 样式: 确定浏览器是否支持DOM2级定义的CSS能力: 1.2 访问样式: A. DOM样式的属性和方法: ...

  • html和CSS基础课程(7-1 7-2 7-3 7-4)

    7章 CSS样式基本知识 这一章节主要讲解与CSS样式相关的基础知识:CSS样式的位置及相关的优先级,为后面的CS...

  • CSS样式选择器的权重之重塑三观

    关于css权重,前端开发者大概能想到:!important优先级最高,内联样式次之,然后是css样式文件显示最后的...

  • 2019-01-02

    第12章 DOM2和DOM3 12.2 样式 12.2.1 访问元素的样式 在style特性中指定的任何CSS属性...

  • 组件样式

    angular使用标准的css来设置样式,所以可以把关于css的知识和技能直接用于angular程序中,例如样式表...

  • 浏览器静态资源加载优化

    CSS资源、font资源 css资源全局样式、页面级公共样式、组件级公共样式(通过合理添加类名复用样式声明、尽量减...

  • HTML+CSSday02

    CSS层叠样式表 CSS(Cascading Style Sheets) ,通常称为CSS样式表或层叠样式表(级...

  • 前端基础-CSS

    CSS层叠样式表 CSS(Cascading Style Sheets) ,通常称为CSS样式表或层叠样式表(级...

  • css基础

    1 、 CSS样式的基础知识 1 认识CSS样式 CSS全称为“层叠样式表 (Cascading Style Sh...

网友评论

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

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