为HTML文档中的元素指定样式可以有3种方法:使用内嵌样式、在页面的head中对Style进行声明以及外部 CSS 文件。元素的视觉效果往往是由上述3种方式的结合或者其中某一种方式来确定的,但是内嵌样式通过元素的 Style 对象来访问,而其他的方式,相对应的style 对象属性将是空值。元素的计算样式包括了所有元素可以应用的样式。这些计算样式都可以通过javascript 访问,不过不是使用style 对象,而是需要更多一点的代码才能访问到他们。下面提供的代码就可以做到这些:
<div id="container" style="width:500px;cursor:pointer;">获得元素的计算样式</div>在 W3C DOM下,元素的计算样式可以通过 document.defaultView 并借助 getComputedStyle 方法来访问,代码如下:
var heading = document.getElementById("container");
var computedStyle = document.defaultView.getComputedStyle(heading,null);
var computedFontSize = computedStyle.fontSize;
alert(computedFontSize);而在 IE 中方法更简单一下,借助元素特有的属性 currentStyle便可以访问到计算样式了,代码如下:
var heading = document.getElementById('container');
var computedFontSize = heading.currentStyle.fontSize;
alert(computedFontSize);
综合上述的方法,我们给出了一个跨浏览器的计算样式的函数,代码如下:
function retrieveComputedStyle(element,styleProperty){
   var computedStyle = null;
   if (typeof element.currentStyle != 'undefined'){
        computedStyle = element.currentStyle;
   }else{
        computedStyle = document.defaultView.getComputedStyle(element,null);
   }
   return computedStyle[styleProperty];
}

var heading = document.getElementById("container");
alert(retrieveComputedStyle(heading,"fontSize"));
虽然该方法能得到元素的样式,不过在不同的浏览器下,返回值可能不一样。这点要一定要注意,特别是在样式没有定义的情况。比如上面的例子中Firefox 返回 16px,而在 IE 中返回 12pt

最新文章

  1. BinaryHeap Java实现
  2. php利用淘宝IP库获取用户ip地理位置
  3. back(返回)键总结
  4. jTemplates——学习(1)
  5. Android之RecyclerView入门
  6. HIVE---基于Hadoop的数据仓库工具讲解
  7. [HNOI 2018]排列
  8. git强制提交本地分支覆盖远程分支
  9. Centos 6.5 pptpd服务端搭建过程
  10. Unity 消息管理(观察煮模式)
  11. windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式 Windows 检测到 EFI 系统分区格式化为 NTFS。将 EFI 系统分区个数化为 FAT32,然后重新启动安装
  12. 【k8s】搭建步骤
  13. iOS:viewController 和 view 的生命周期、不错的代码设计风格
  14. [可能没有默认的字体]Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename...
  15. 使用隐藏form表单下载文件,解决url方式下载,由于环境问题而限制url长度,满足不了所有的需求!
  16. DNS劫持和DNS污染
  17. 基于Windows 配置 nginx 集群 &amp; 反向代理
  18. (zxing.net)二维码QR Code的简介、实现与解码
  19. 62 不同路径 leetcode JAVA
  20. PAT——1066. 图像过滤

热门文章

  1. 为什么要使用ORM技术?和 JDBC 有何不一样?
  2. IBM Cognos 10.2 最新体验之旅
  3. php与JAVA的RSA加密互通
  4. Eclipse里git提交冲突rejected – non-fast-forward
  5. MySQL-5.7中InnoDB表数据文件存储位置
  6. saas服务提供商
  7. VC++中如何让RadioButton分组,并且互斥
  8. SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件?
  9. 【转】使用Badboy录制脚本,作为JMeter测试的素材
  10. if-else 循环嵌套结构