我们在网页元素中定义的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标签元素。

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

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

  1. 5种样式实现div容器中三图摆放实例对比说明

    代码地址如下: http://www.demodashi.com/demo/11593.html 效果演示: demo点查看效果 需求说明: 如下图所示为设计图,希望在图片上传无规则无规律的情况下实现 ...

  2. VMWare学习总结(2)——VMware中三种网络连接的区别

    1.概述 大家在安装完虚拟机后,默认安装了如下图的两块虚拟网卡--VMnet1和VMnet8,其中VMnet1是host网卡,用于host方式连接网络:VMnet8是NAT网卡,用于NAT方式连接网络 ...

  3. VMware中三种网络连接的区别

    VMware中三种网络连接的区别 1.概述 2.bridged(桥接模式) 3.NAT(网络地址转换模式) 4.host-only(主机模式) 5.replicate physical network ...

  4. java静态变量和实例变量的区别_Java 中静态变量和实例变量区别

    静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对象的属性,必须创建了实例对象,其中的 ...

  5. JAVA中几种循环结构的表示_本文通过实例讲解给大家介绍Java中for、while、do while三种循环语句的区别,具体详情如下所示:第一种:for循环 循环结构for语句的格式...

    本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后 ...

  6. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  7. 最近,又发现了 Pandas 中三个好用的函数

    作者 | luanhz 来源 | 小数志 导读 近日,在github中查看一些他人提交的代码时,发现了Pandas中这三个函数,在特定场景中着实好用,遂成此文以作分享. 程序的基本结构大体包含三种,即 ...

  8. Python3中的类和实例

    1.类和实例 类是抽象的模板,实例是根据类创建出来的一个个具体的"对象".例如:动物是一大类,猫.狗.鱼等都是特定的对象,即实例.python3中使用class关键字来定义类,基本 ...

  9. python中property函数_python 邮件表格Python中property函数用法实例分析

    本文实例讲述了Python中property函数用法.分享给大家供大家参考,具体如下: 通常我们在访问和赋值属性的时候,都是在直接和类(实例的)的__dict__打交道,或者跟数据描述符等在打交道.但 ...

最新文章

  1. 如何提取明细表头_会计新手,如何开展做账工作?
  2. PHP怎么检查登录和退出,如何检查用户是否以PHP登录?
  3. linux简介ubuntu,Linux文件系统简介(基于Ubuntu)
  4. LeetCode(40):组合总和 II
  5. Python项目:用所有朋友微信头像做云图图
  6. Web.xml in Hello1 project
  7. oozie timezone时区配置
  8. 【语音处理】基于matlab语音去噪频谱分析【含Matlab源码 1019期】
  9. c#数据库连接总结2上篇(通过数据库进行登入和注册)
  10. ad16怎么画弧线_ad16怎么画弧线_板绘是什么?怎么用?
  11. 新手入门 | 算法书籍推荐
  12. 鹅厂假前端实习鹅的实习日志
  13. 利用计算机制作多媒体最后一步,计算机多媒体技术在影视后期制作的运用
  14. MyBatisPlus的使用--十数个案例足以让你步入mybatisplus
  15. OpenCV OAK-D-S2相机测试
  16. typora+百度云盘+markor实现多端云同步
  17. 辽宁省葫芦岛市谷歌高清卫星地图下载
  18. pythoncookie自动登录_Python爬虫连载6-cookie深入使用实例化实现自动登录
  19. 花最少的时间驱动湿温度传感器之RT-Thread sht3x之(DIY一个小小天气站+万年历)
  20. VLC 屏幕录像时录制鼠标的方法:

热门文章

  1. 在SQL SERVER中使用分布式事务
  2. 升级GCC 4.6后的warning: ”variable set but not used“
  3. LIbGDX 示例Tests详解一:AccelerometerTest
  4. 汇编语言随笔(15)- 对键盘输入进行处理(int 9 和 int 16h 中断例程)
  5. markdown常用操作(特殊字符显示、换行、字体颜色和大小、图片位置和大小)
  6. mybatis使用foreach实现sql的in查询
  7. PC处理器装机中的认识 三
  8. webRTC——浏览器里的音视频通话
  9. 通过libVirt抓取kvm虚拟机监控指标数据
  10. 增加/dev/shm大小