操作样式表

CSSStyleSheet类型表示的是样式表包括通过<link>元素包含的样式表和在<style>元素中定义的样式表,前面提到过这两个元素本身分别是由HTMLLinkElement和HTMLStyleElement类型表示的,但CSSStyleSheet类型相对来说更加通用一些,而不管这些样式表在HTML中如何定义。

var supportsDOM2StyleSheets=document.implementation.hasFeature("StyleSheets","2.0");

CSSStyleSheet继承自StyleSheet,继承来的属性如下:

disabled:表示样式表是否被禁用的布尔值,可读写。设置为true表示禁用样式表

href:如果样式表是通过<link>包含的,则是样式表的URL;否则是null

media:表示样式表支持的所有媒体类型的集合,与其他DOM集合一样,支持item()和[]方法访问内部的项,如果集合是空列表,表示样式表适用于所有媒体,在IE中,media是一个反映<link><style>元素media特性值得字符串

ownerNode:指向拥有当前样式表的节点的指针,如果当前样式表是其他样式表通过@import导入的,则这个属性为null,IE不支持这个属性

parentStyleSheet:通过@import导入的情况下,这个属性是一个指向导入它的样式表的指针

title:ownerNode中的title属性的值

type:表示样式表类型的字符串,对CSS样式表而言,字符串是“type/css”。

除了disabled,其它属性都是只读的,在支持以上属性的基础上,CSSStyleSheet类型还支持下列属性和方法:

cssRules:样式表中包含的样式规则的集合,IE不支持这个属性,担忧一个类似的rules属性

ownerRule:样式表如果通过@import导入的,则这个属性就是一个指针,指向表示导入的规则;否则,值为null,IE不支持这个属性

deleteRule(index):删除cssRules集合中指定位置的规则,IE不支持这个属性,单有类似的removeRule()方法

insertRule(rule,index):向cssRules集合中插入rule字符串,IE不支持这个属性有类似addRule()方法

应用于文档的所有样式表是通过document.styleSheets集合来表示的,它有length属性,[]和item()访问

CSS规则

CSSRule对象表示样式表中每一条规则,实际上CSSRule是一个供其他多种类型继承的基类型,其中最常见的就是CSSStyleRule类型,CSSStyleRule对象包含下列属性:

cssText:返回整条规则对应的文本,不同浏览器返回的文本格式可能不同,IE不支持这个属性,cssText(只读)与style.cssText(可重写)属性类似,前者包含选择符文本和围绕样式信息的花括号,后者只包含样式信息

parentRule:如果当前规则是导入的规则,这个属性引用的就是导入规则;否则为null,IE不支持这个属性

parentStyleSheet:当前规则所属的样式表,IE不支持这个属性

selectorText:返回当前规则的选择符文本,不同浏览器返回的文本格式可能不同,Opera允许修改这个值,其他浏览器不可写入

style:一个CSSStyleDeclaration对象,可以通过它设置和取得规则中特定的样式值

type:表示规则类型的常量值,对于样式规则,这个值是1,IE不支持这个属性

创建规则

使用insertRule()方法,接收2个参数:规则文本,插入位置的索引

sheet.insertRule("body{background-color:silver}",0);  //规则的次序在确定层叠之后应用到文档的规则时至关重要

IE8及之前的版本支持一个类似的方法:addRule,接收2个必选参数和一个可选参数:选择符文本、CSS样式信息和要插入的位置

sheet.addRule("body","background-color:silver",0);  //仅对IE有效

跨浏览器

if(sheet.insertRule){

  xxxx

  }else if(sheet.addRule){

  xxxx

  }

删除规则

sheet.deleteRule(0);  //DOM方法,接收要删除的规则的位置

sheet.removeRule(0);  //针对IE,方法相同

跨浏览器,同上

JavaScript高级程序设计33.pdf的更多相关文章

  1. JavaScript高级程序设计61.pdf

    JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...

  2. JavaScript高级程序设计60.pdf

    错误处理 try-catch语句 try{ //可能会导致错误的代码 }catch(error){ //在错误发生时如何处理 } error是一个包含着错误信息的对象,它有一个message属性,保存 ...

  3. JavaScript高级程序设计58.pdf

    15章 使用Canvas绘图 略 16章 HTML5脚本编程 HTML5规范了新的HTML标记和JavaScript API,以便简化创建动态Web界面的工作 跨文档消息传递 简称XDM,指来自不同域 ...

  4. JavaScript高级程序设计57.pdf

    表单序列化 首先了解一下浏览器如何将数据发送给服务器 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送type为“reset” ...

  5. JavaScript高级程序设计55.pdf

    输入模式 HTML5为文本字段新增了pattern属性,这个属性的值是一个正则表达式,用于匹配文本框中的值 例如,只想在允许在文本字段中输入数值 <input type="text&q ...

  6. JavaScript高级程序设计54.pdf

    过滤输入 对于一些浏览器,可以使用正则表达式里的text()测试用户按下的按键,Firefox和safari(3.1版本之前)会对向上向下.退格键和删除键触发keypress事件,在Firefox中, ...

  7. JavaScript高级程序设计53.pdf

    共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...

  8. JavaScript高级程序设计52.pdf

    表单脚本 表单的基础知识 在HTML中,表单是由<form>元素表示的,在Javascript对应的是HTMLFormElement类型,它继承自HTMLElement,因此具有与其他HT ...

  9. JavaScript高级程序设计50.pdf

    hashchange事件 HTML5新增了hashchange事件,以便在URL的参数列表(及URL中“#”号后面的所有字符串)发生变化时通知开发人员,之所以新增这个事件,是因为在Ajax应用中,开发 ...

随机推荐

  1. 利用Linux系统生成随机密码的10种方法

    Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日期,并输出结 ...

  2. WEB架构师成长之路之三-架构师都要懂哪些知识

    Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...

  3. STM32与S3C2440的区别

    一.定位 STM32: 高功能单片机.工业控制 S3C2440:  处理器.智能设备 二.跑系统 STM32: ucos-II S3C2440:  Linux等大型系统 三.硬件架构 STM32: C ...

  4. STM32内存映射

    一.概述 STM32内存映射是STM32的架构的重要组成部分,不可或缺. 二.STM32内存映射图 1.内存映射图--摘自<CM3权威指南> 2.内存映射图--摘自<STM32F10 ...

  5. Leaflet学习笔记-基础内容

    为什么选择Leaflet 开源,且代码仅有 31 KB,但它具有开发人员开发在线地图的大部分功能(80%的功能) 是不是比arcgis要小很多呢 官网:http://leafletjs.com/ 劣势 ...

  6. 使用SeaJS实现模块化JavaScript开发(新)

    本文转自张洋,因为SeaJS更新版本很快,所以原文中很多地方不太适用,在这里发布一个更新版. 前言   SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaSc ...

  7. MAC安装XAMPP的出现无法打开Apache server

    安装MAMP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache,可是默认是没有启动的.我也没有开启Web共享,怎么就开机启动了呢? 不知 ...

  8. Java final知识点

    被final修饰的值,只可以被赋值一次. 被final修饰的类,其所有方法就变成了final方法,该类也不能被继承. 被final修饰的方法,不能在子类中重写. public static void ...

  9. 【良心noip膜你赛】总结

    一点都不良心!!!! AK 快乐爆零快乐!!! 1. A. value512mb 1s规定一个区间的价值为这个区间中所有数 and 起来的值与这个区间所有数 or 起来的值的乘积.例如 3 个数 2, ...

  10. [转贴]WebService的简单实现 C++

    WebService的简单实现 一.socket主机创建和使用过程 1.socket()//创建套接字 2.Setsockopt()//将套接字属性设置为允许和特定地点绑定 3.Bind()//将套接 ...