「CSS」DOM2 级样式

news/2024/7/6 0:53:41 标签: javascript, 嵌入式

对象类型

CSSStyleSheet

表示的是使用 <link> 链接的外部样式表,也可以是 <style> 定义的嵌入式样式表。

javascript">var sheets = document.styleSheets; // 所有的 CSSStyleSheet 对象

var link = document.getElementsByTagName('link')[0];
var sheet = link.sheet; // IE8- 中是 .styleSheet

注意一下,如果 <link>rel 属性不是 stylesheet 的情况下,是无法获取 sheet 属性的。

重要的属性有:

sheet: 对应的 CSSStyleDeclaration 对象。
disabled: 设置为 true 可以禁用此样式表。
link: 外部样式表是 URL 地址,内嵌样式表是 null
parentStyleSheet: 仅是被 @import 导入的样式表拥有,指向使用 @import 导入该样式表的样式表。
cssRules: CSSStyleRule 对象集合。

重要的方法有:

deleteRule(index): 删除 index 处的 Rule。 IE8- 为 removeRule(index)

insertRule(selectorText + '{' + cssText + '}' , index): 向指定位置插入一条 Rule,内容为 selectorText + '{' + cssText + '}'。IE8- 为 addRule(selectorText, cssText, index)

CSSStyleRule

CSS 样式表的每一条记录都会表示成一个 CSSStyleRule 对象,比如:

div .relative {
    position: relative;
}

#sidebar {
    float: left;
}

就会产生两个 CSSStyleRule 对象。

这个对象主要使用的属性有以下几个:

cssText: 样式的内容,不包括选择器文本和花括号。 IE8-不支持。
style: 这个条目的 CSSStyleDeclaration 对象。
selectorText: 返回当前选择器的文本,即上面的div .relative#sidebar

作者认为,使用上面的 CSSStyleSheet.cssRules 结合这个对象的 selectorText 属性可以查找到某一个特定的样式,进而进行更改。

CSSStyleDeclaration

所有支持 style 属性的 HTML 元素的 HTMLElement 对象都有一个 style 属性。这个属性包含着所有通过标签中 style 属性指定的样式信息,但不包括外部样式表和内嵌样式表的样式信息。

style 属性的属性与样式一一对应,通过设置相应的属性便可以达到控制样式的目的。

使用短划线的属性,例如 font-size,对应的属性名就是它的驼峰命名形式,即 .fontSize

由于 float 是 JavaScript 的关键字,不能直接使用,故使用 .cssFloat 代替(IE8- 中是 .styleFloat)。

javascript">var el = document.getElementById('div1');

el.style.width = '100px';
el.style.cssFloat = 'left';
el.style.backgroundImage = 'url(/images/logo.png)'

属性和方法:
length: 所有已经设置了值的属性个数。
getPropertyValue(propName): 获得某个属性的值,未设置返回 null
getPropertyPriority(propName): 检测某个属性是否设置了 !important,是返回 "important",否返回 ""
removeProperty(propName): 删除属性。
setProperty(propName, value, "important" | ""): 设置某个属性的值和优先级。

样式遍历

对于内联样式表的属性进行遍历,即对 HTMLElement 的 .style 属性进行遍历。

也许你们会想,使用 for in 遍历不就可以了吗?真是这么简单便不会来说了。
CSSStyleDeclaration 属性即使对于没有设置的值也是有定义的,故所有的属性在这个对象里面都有定义,故不能使用 for in。

但是这个对象提供给了我们一种方式,它将所有赋值了的属性全部使用 数字:属性名 映射在对象中。在上面也提到,length 属性是所有已赋值的属性的个数。那么我们可以使用如下方法遍历。

javascript">var style = document.getElementById('sidebar').style;

for(var i = 0; i < style.length; i++) {
    console.log(style[i] + ': ' + style[style[i]]);
}

仅仅是获得非常少的样式信息并不是我们所需要的,如何获得这个元素的所有样式信息,包括外部样式表,内嵌样式表,内联样式表,浏览器默认样式?

IE9+ 以及其他现代浏览器提供给了我们 window.getComputedStyle(el) 函数。
传入一个 DOM 元素,返回一个 CSSStyleDeclaration,这个对象是它表现出来的样式(即通过层叠之后的样式)。


http://www.niftyadmin.cn/n/710499.html

相关文章

助力中国芯片业崛起,潘文明2017全国高校FPGA巡讲开幕

智能时代的到来&#xff0c;令芯片的需求与日剧增。中国每年均需消耗占全球四成以上的芯片&#xff0c;成为最大的芯片需求国。据海关总署数据&#xff0c;截至2017年10月底&#xff0c;本年度中国集成电路进口金额已高达2071.97亿美元。由于部分芯片还存在需求缺口&#xff0c…

25 繁殖问题

25 繁殖问题 作者: 孙辞海 时间限制: 1S章节: 一维数组 问题描述 : 有一家生化所&#xff0c;一月份引入一对新生的小白鼠。这对小白鼠生长两个月后&#xff0c;在第三、第四、第五个月各繁殖一对新小白鼠&#xff0c;在第六个月停止繁殖&#xff0c;在第七个月则死亡。新生…

(java实现)顺序表-ArrayList

什么是顺序表 顺序表是在计算机内存中以数组的形式保存的线性表&#xff0c;是指用一组地址连续的存储单元依次存储数据元素的线性结构。 在使用顺序表存储数据前&#xff0c;会先申请一段连续的内存空间&#xff08;即数组&#xff09;&#xff0c;然后把数组依次存入内存&…

setlocal 与 变量延迟

setlocal 与 变量延迟 本条内容引用[英雄出品]的批处理教程&#xff1a; 要想进阶&#xff0c;变量延迟是必过的一关&#xff01;所以这一部分希望你能认真看。 为了更好的说明问题&#xff0c;我们先引入一个例子。例1: echo off set a4 set a5 & echo %a% pause结果&…

shell脚本编写3

字符串的处理&#xff1a; ${:截取 /替换 #掐头 % 去尾} 字符串的截取的三种处理方法&#xff1a; 方法一&#xff1a;(注&#xff1a;从左开始第一位是以0开始) ${} 格式${取用的变量名:起始位数:长度} 例&#xff1a; x1234567890 echo ${x:1:3} &#xff08;输出是234&#…

linux shell 中21含义-完美理解-费元星

笨鸟先飞&#xff0c;先理解。 脚本是: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文…

35 最大值

35 最大值 作者: frankhuhu时间限制: 10S章节: 一维数组 emmm…明明和他爸可真是热爱数学呀&#xff01;&#xff01;&#xff01; 问题描述 : 为了培养明明对数学的热爱&#xff0c;明明的爸爸经常想出一些简单有趣且富有数学思想的游戏给明明玩。有一次&#xff0c;明明的…

LVS

LVS负载均衡详解工作模式介绍&#xff1a;工作模式是配置在&#xff1a;real server 上1.Virtualserver via NAT&#xff08;VS-NAT&#xff09; -m优点&#xff1a;集群中的物理服务器可以使用任何支持TCP/IP操作系统&#xff0c;物理服务器可以分配Internet的保留私有地址…