关于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属性,不过这样太麻烦了

    在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标签元素。

posted on   birdshome  阅读(9141)  评论(3编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

点击右上角即可分享
微信分享提示