JavaScript学习-操作样式的DOM API

1,介绍

  • 定义样式的方式有3种
    • 通过link元素包含外部样式表文件。
    • 使用style元素定义嵌入式样式。
    • 使用style特性定义针对特定元素的样式。
  • 确定浏览器是否支持DOM2级定义的CSS能力,可以使用一下代码。

    var supportsDOM2CSS = document.implementation.hasFeature("CSS","2.0");
    var supportsDOM2CSS2 = document.implementation.hasFeature("CSS2","2.0");

2,访问元素的样式

  1. 通过style特性
    • 包含style特性的元素都有一个对应的style属性对象,这个对象是CSSStyleDeclaration实例。
    • 在style特性中指定的任何CSS属性都将表现为这个style对象的相应属性。特点如下
      • 对于使用短划线(分隔不同的词汇,例如background-image)的CSS属性名,必须转换成驼峰大小写形式。
      • 一个不能直接转换的CSS属性是float。DOM2级样式规范规定相应的属性名是cssFloat,IE则是styleFloat。
    • DOM样式的属性和方法
      这里写图片描述
  2. 计算的样式
    • 从其他样式表层叠而来并影响到当前元素的样式信息。
    • document.defaultView.getComputedSytle()方法
      • 接收两个参数:要取得计算样式的元素,一个伪元素字符串(例如“:after”,可为null)。
      • 返回一个CSSStyleDeclaration对象。
      • 从外包含的样式(或嵌入的样式)属性若与特性相同会被覆盖。
    • IE不支持getComputedSytle()方法,在IE中每个具有style属性的元素还有一个currentStyle属性,包含当前元素全部计算后的样式,类似于getComputedSytle()方法。
    • 所有计算的样式都是只读的。

3,操作样式表

  • CSSStyleSheet表示样式表,包括通过link元素包含的样式表和在style元素中定义的样式表,分别是HTMLLinkElement和HTMLStyleElement类型。CSSStyleSheet类型相对更加通用一些,不管这些样式在HTML中如何定义的,CSSStyleSheet是只读的。
  • 使用下列代码可以确定浏览器是否支持DOM2级样式表

    var supportsDOM2StyleSheets = document.implementation.hasFeature("StylesSheets","2.0");
  • CSSStyleSheet继承自StyleSheet,StyleSheet的属性如下:
    这里写图片描述
  • 获取styleSheet兑现的方式

    • 通过document.styleSheets集合,使用length和item()(或者方括号)访问每一个样式表。
    • 通过link和style元素取得CSSStyleSheet对象。使用sheet表示,IE使用styleSheet属性。

      • 代码示例
      function getStyleSheet(element){
          return element.sheet || element.styleSheet;
      }
      // 取得第一个link元素引入的样式表
      var link = document.getElementsByTagName("link")[0];
      var sheet = getStyleSheet(link);

4,CSS规则CSSRule

  • CSSStyleRule继承自CSSRule,CSSStyleRule包含下列属性:
    这里写图片描述
  • 创建规则insertRule()方法

    • 接收两个参数:规则文本和表示在哪里插入规则的索引。

      sheet.insertRule("body { background-color:silver }"0);//DOM方法
  • 删除规则deleteRule()方法

    • 参数:要删除的规则的位置。
    • 代码示例

      function deleteRule(sheet,index){
          if (sheet.deleteRule){
              sheet.deleteRule(index);
          }else if(sheet.removeRule){
              sheet.removeRule(index);//对IE
          }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值