关于HTML Object中三个Style实例的区别

简介:

 我们在网页元素中定义的CSS属性,会被映射成该DHTML对象中Style对象(不是Style Tag对象)的实例。我们可以使用import-style[1]和inline-style[2]为网页元素指定CSS属性,同时也可以使用element. style. attributeName = '...'的形式在Web页脚本中设置其值。但是同一个元素上的这些CSS属性值并不是都叠加后映射到同一个Style对象的实例上。

    我们使用脚本最常访问的Style对象,一般是element[3].style,但是这个对象只能反映出inline-style和使用脚本设置的样式值。同时这个element.style是不能访问元素的import-style的属性设置的。如果非要访问,可以使用styleSheets集合,在里面遍历获得元素的import-style属性,不过这样太麻烦了emcrook.gif

    在IE5.0及以后,微软为HTML Object提供了两个新的Style对象实例,分别是:currentStyle和runtimeStyle。

    currentStyle可以获元素的实际表现出来的CSS属性,就是说除了inline-style、import-style外,还包括了HTML元素属性的设置和HTML元素默认属性的累加。累加的默认优先级是:inline-style > import-style > HTML Attribute > HTML default。例如:<div style="display:inline"></div>。其currentStyle.display将会是inline,虽然div本身默认的display是block。不过对于inline-style和import-style的优先级不是绝对的,它俩还可以使用 ! important限定符来定制优先级,当然要是都使用了 ! important限定,就和都没有用一样。同时currentStyle还可以获取display属性为none的元素的CSS属性,得到的属性值和其显示时的值相同。由于currentStyle是一个异步对象,其实际取值依赖于它的实际显示状态,而不依赖于脚本对style的赋值。

    runtimeStyle也是Style对象的实例,所有的runtimeStyle的属性在默认状态下都是为空的(就是没有指定值)。那么它是用来干什么的呢?这个属性和style基本没有什么关系,顾名思义,它是在运行时刻控制元素的CSS属性的,设置了runtimeStyle后会影响currentStyle的对应属性值,同时也会在HTML元素的显示上表现出来。它的最大特点是,当我们把修改过的CSS属性的值再次清掉(赋'')的时候,其HTML元素的CSS属性会变为赋值前的值,同时currentStyle也还原了。runtimeStyle设置的属性具有最高的优先级,但是它不是永久的。

    style的用途不说了,太easy。currentStyle用来取元素实际表现得CSS属性。而runtimeStyle的用途除了本页提供的"Resume"功能这种情况外,想了半天再也想不出啥别的大作用了。

 

    [1]. import-style是指在HTML元素中使用class属性或者使用其id等直接为元素指派的外部CSS属性。例如:<div class="fontSize"></div>。

    [2]. inline-style是指在HTML元素中使用style属性直接为其指派的CSS属性。例如:<div style="width: 100%; height: 100%"></div>。

    [3]. 泛指Web页中的HTML标签元素。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
前端开发
CSS和HTML的区别
CSS和HTML的区别。
10 2
|
2月前
|
Python
DTL与普通的HTML文件的区别
DTL与普通的HTML文件的区别。
67 5
|
3月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
51 0
|
3天前
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 区别以及优缺点
7 0
|
4天前
|
JavaScript 前端开发
VUE3v-text、v-html、:style的理解
VUE3v-text、v-html、:style的理解
12 2
|
6天前
|
前端开发
html中行内元素、块级元素、行内快元素都有哪些,以及区别
html中行内元素、块级元素、行内快元素都有哪些,以及区别
15 1
|
13天前
|
XML 存储 前端开发
【Web 前端】HTML、XHTML、XML 有什么区别?
【4月更文挑战第22天】【Web 前端】HTML、XHTML、XML 有什么区别?
|
15天前
|
安全 Java 编译器
【JAVA】泛型和Object的区别
【JAVA】泛型和Object的区别
|
25天前
|
JavaScript 前端开发 数据安全/隐私保护
HTML中表单元素和表格元素分别是什么,有什么区别,列举几个代码
HTML中表单元素和表格元素分别是什么,有什么区别,列举几个代码
10 0
|
1月前
几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段