后面有例子,所以把HTML,CSS样式写在前面

HTML结构:

<div id="myDiv" style="background-color: lightseagreen; border: 5px solid #ccc;"></div>

CSS样式:

#myDiv{
width: 200px;
height: 200px;
background-color: red;
}

1.先来解释下getComputedStyle

getComputedStyle()方法返回一个CSSStyleDeclaration对象,其中包含当前元素的所有计算样式。

其语法:

接受两个参数:参数1 element表示用于计算样式的元素;参数2 pseudoElt表示伪元素,若没有可用null代替

上面信息参考自这里 。

另外通过查找其他一些资料看到也有这样写的:

var style = document.defaultView.getComputedStyle(element,[pseudoElt]);

与之前的语法相比参数相同,不同之处很明显不用说了吧。window与document.defaultView有什么区别呢,稍等去查下资料。

要补充一点,参数2可省略不写。

2.兼容性

getComputedStyle()方法兼容性放面还是不错滴,来人!上证图!

如图,除了不兼容IE8之前的,其他主流浏览器都兼容,可以放心大胆的使用了。

“等等,这位小哥,那IE6~8怎么办?”

“这个嘛,有办法!”

3.currentStyle支持IE6~8

在IE中,每个具有style属性的元素还有一个currentStyle属性。

其语法是:element.currentStyle.attribute或element.currentStyle['attribute'];

div.currentStyle.width;

或者

div.currentStyle['width'];

4.该说说defaultView了

defaultView是什么鬼,还真不知道,马上Google一下在mozilla上查到一点信息:在浏览器中,该属性返回当前 document 对象所关联的 window 对象,如果没有,会返回 null

兼容性方面:根据 quirksmode,IE 9 以下版本不支持 defaultView

测试一下与window的关系

alert(document.defaultView==window);//true

返回的结果是true,哇咔咔咔再测测全等于是不是返回的也是true

alert(document.defaultView===window);//true

弹出的结果也是true。

既然这样我干嘛不用语句短的那个呢。由语法一得知getComputedStyle()方法本身就存在于window全局对局对象中,是不是可以这样写

var comput = getComputedStyle(div);    

经测试完全可以!

5.style

style用于获取或设置元素的内联样式,内部样式和外部样式用style是获取不到的。

获取内部样式的height属性值:

alert(div.style.height);

弹出结果如图:

获取内联样式:

alert(div.style.border);

弹出结果如图:

显然可以获取得到,不知道细心的你发现没有我在内联样式设置的border颜色使用十六进制设置的弹出的却是rgb格式的。测试主要是在Google浏览器,又试了火狐、Opera、Safari浏览器测试返回的都是rgb格式(IE因为没有条件暂时没有测试,有兴趣的可以测一下)。

6.总结

叨叨了不少,来个总结吧!

getComputedStyle()获取的是计算机(浏览器)计算后的样式,兼容除IE6~8之外的其他主流浏览器,只读。

currentStyle仅支持IE浏览器,作用与getComputedStyle一样,但是用法不同。

style用于获取或设置元素的内联样式,内部样式和外部样式用style则获取不到。

有错误或表达不准确之处,欢迎指正。

getComputedStyle的应用的更多相关文章

  1. currentStyle与getComputedStyle应用

    getComputedStyle获取的是计算机(浏览器)计算后的样式,但是不兼容IE6.7.8(主要用于非IE浏览器) currentStyle方法兼容IE6.7.8,但是不兼容标准浏览器(主要用于I ...

  2. JS使用getComputedStyle()方法获取CSS属性值

    在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如下: 1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属 ...

  3. style,currentStyle,getComputedStyle的区别和用法

    先说说层叠样式表的三种形式(三种的叫法不一,按照各自的习惯): 一.内联样式:在HTML标签用style属性设置.如: 1 <p >这是内联样式</p> 二.嵌入样式:通过&l ...

  4. getComputedStyle/currentStyle/style之间的爱恨情仇

    getComputedStyle是? getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值.返回的是一个CSS样式声明对象([object CSSStyleDeclarat ...

  5. getComputedStyle 方法

    一:getComputedStyle getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值.返回的是一个CSS样式声明对象([object CSSStyleDeclarat ...

  6. 【CSS进阶】原生JS getComputedStyle等方法解析

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  7. JavaScript getComputedStyle

    我们使用 element.style 也可以获取元素的CSS样式声明对象,但是其与 getComputedStyle 方法还是有一些差异的. 首先,element.style 是可读可写的,而 get ...

  8. getComputedStyle的简单用法

    var number=window.getComputedStyle("元素").style样式名

  9. JavaScript中style, currentStyle和 getComputedStyle的异同

    今天在做项目的时候,习惯性的用到了element.style.width,然而浏览器却报错,错误提示是style is undefined,这是我才意识到,内联样式表和外联样式表在js应用中也有很大的 ...

随机推荐

  1. vector

    .vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. .vector容器最擅长的工作是: 利用位置索引存储容器中的单个元素. 以任何顺序迭代容器中的元素. 在容器的末尾追加和删除元素. ...

  2. 数据库 之MySQL 简单教程

      So Easy系列之MySQL数据库教程 1.   数据库概述 1.1.  数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...

  3. 打开eclipse报错

    隔了一段时间没用eclipse, 打开之后报错: 从报错上来看是因为java版本太低导致的. 我打开cmd, 运行java -version 后 发现java 版本已经更新到了1.8 然后就有点懵. ...

  4. jquery动态添加的html,第三方插件无法生效的情况

    今天一个问题纠结了半天,问题如下图  问题大致就是如上,新增的内容死活点不起,插件没有生效,在一个装逼前端群里面问,给我的答案是叫我去了解事件委托,了解一下事件冒泡!! 好吧,我一上午加半个下午的时间 ...

  5. js变量及其作用域(附例子及讲解)

    Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量   工具/原料   Ch ...

  6. iOS 申请加急审核

    申请加急网址:https://developer.apple.com/appstore/contact/appreviewteam/index.html 提交加急审核需要理由,一般涉及到银行信息,或者 ...

  7. CENTOS7 mysql 安装

    CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...

  8. 转 centos虚拟机环境的构建。

    转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/CentOs.html 一.前言 作为一个想从事j2ee后台开发的程序猿,l ...

  9. Js实现string.format

    经常需要动态拼接html字符串,想到用类似于.net的string.format函数比较好,于是找了下,stackoverflow的代码: if (!String.prototype.format) ...

  10. WebAPI图片上传

    public Task<HttpResponseMessage> PostFormData() { // Check if the request contains multipart/f ...