一般来说我们获取CSS的样式的时候会优先采用Elment.style.cssName 这种方法,这种方法类似于对象设置get,set属性获取,例如Elment.style.cssName是获取,Elment.style.cssName = “100px” 是设置,但是这种方法不能获取css样式表或者内嵌样式(这种方法只能获取内联样式),所以这个时候我们需要其他方法。

DOM标准为我们提供了window.getComputedStyle这个方法可以用来获取css样式表和内嵌样式的计算值,这个方法接受2个参数,并且返回一个样式表对象,对象的命名采用驼峰式的命名规则

widow.getComputedStyle(element,null)其中第二个参数一般为null,也可以是伪类例如:hover,:after设置过后就是获取伪类上设置的样式,注意这个方法返回了一个对象,我们要从对象上获取我们所需要的样式。例如:

widow.getComputedStyle(element,null).backgroundColor

IE为我们提供了另一种方法currentStyle,使用方法为element.currentStyle,它也返回一种样式表对象,查询方式也是element.currentStyle.backgroundColor,这个方法无法获取我们在样式表中设置的伪类元素。

这2种方法获取计算样式并不是万能的,在不同的浏览器下会有很大的差别,所以使用的时候要小心,比如在IE下获取未设置的元素会返回auto,或者其它值。以下是对这2种方法的封装

var css = (function (model) {

    if (window.getComputedStyle){
return function css (cssName,cssValue,that) { if(typeof cssValue !== "string") {
that = cssValue;
} if (typeof that === "undefined"){
that = this;
} if (typeof cssName === "string") { if (typeof cssValue === "string") {
return that.style[cssName] = cssValue;
} if (that.style[cssName]) {
return that.style[cssName];
}else{
var cssStyle = window.getComputedStyle(that,null);
return cssStyle[cssName];
}
} if (typeof cssName === "object") {
for (var i in cssName) {
that.style[i] = cssName[i];
}
return cssName;
}
}
}else{
return function css (cssName,cssValue,that) { if(typeof cssValue !== "string") {
that = cssValue;
} if (typeof that === "undefined"){
that = this;
} if (typeof cssName === "string") { if (typeof cssValue === "string") {
return that.style[cssName] = cssValue;
} if (that.style[cssName]) {
return that.style[cssName];
}else{
var cssStyle = that.currentStyle;
return cssStyle[cssName];
}
} if (typeof cssName === "object") {
for (var i in cssName) {
that.style[i] = cssName[i];
}
return cssName;
}
}
} })();

CSS计算样式的获取的更多相关文章

  1. javascript获取元素的计算样式

    使用css控制页面有4种方式,分别为行内样式(内联样式).内嵌式.链接式.导入式. 行内样式(内联样式)即写在html标签中的style属性中,如<div style="width:1 ...

  2. JavaScript的DOM_通过计算后样式来获取

    虽然可以通过 style 来获取单一值的 CSS 样式,但对于复合值的样式信息,就需要通过计算样式来获取. DOM2 级样式,window 对象下提供了 getComputedStyle()方法.接受 ...

  3. JavaScript获取元素CSS计算后的样式

    原文链接https://www.w3ctech.com/topic/40 我们在开发过程中,有时候需要根据元素已有样式来实现一些效果,那我们应该如何通过JavaScript来获取一个元素计算后的样式值 ...

  4. 深入理解脚本化CSS系列第二篇——查询计算样式

    × 目录 [1]getComputedStyle [2]注意事项 [3]currentStyle[4]IE 前面的话 元素的渲染结果是多个CSS样式博弈后的最终结果,这也是CSS中的C(cascade ...

  5. js访问CSS最终计算样式

    所谓计算样式,就是嵌入式样式.外部样式表.内联样式综合的样式表现,那么如何来获取呢? "DOM2 级样式"增强了document.defaultView,提供了getCompute ...

  6. 获取元素计算样式getComputedStyle()与currentStyle

    window.getComputedStyle()方法是标准化接口,返回一个对象,该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有CSS属性的值. 私有的CSS属性值可以通过对 ...

  7. JS获得css样式即获得元素的计算样式(《Javascript精粹修订版》书摘)

    为HTML文档中的元素指定样式可以有3种方法:使用内嵌样式.在页面的head中对Style进行声明以及外部 CSS 文件.元素的视觉效果往往是由上述3种方式的结合或者其中某一种方式来确定的,但是内嵌样 ...

  8. day26—JavaScript对CSS样式的获取和修改实践

    转行学开发,代码100天——2018-04-11 通过JavaScript获取和修改HTML元素及CSS属性是其一个基本功能.对于CSS样式通常有行内样式,外部样式,内嵌样式之分. 如: 行内样式: ...

  9. 用JS控制CSS基本样式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp29 用JS控制CSS基本样式的方法 CSS code .class1 { ...

随机推荐

  1. java代码实现自动登录功能

    通常我们登录某网站,会有选择保存几天,或者是几个星期不用登录,之后输入该网站地址无需登录直接进入主页面,那么这就叫做自动登录,怎么实现呢,下面我以一个小例子来演示一下 登录页面:login.jsp & ...

  2. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

  3. 机器学习 —— 概率图模型(Homework: StructuredCPD)

    Week2的作业主要是关于概率图模型的构造,主要任务可以分为两个部分:1.构造CPD;2.构造Graph.对于有向图而言,在获得单个节点的CPD之后就可依据图对Combine CPD进行构造.在获得C ...

  4. Linux进程的睡眠和唤醒简析

    COPY FROM:http://www.2cto.com/os/201204/127771.html 1 Linux进程的睡眠和唤醒 在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在 ...

  5. [转载]深入理解JAVA的接口和抽象类

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  6. Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64

    Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64 1. checking linux version. [root@localhost ~]# ...

  7. Xmanager Enterprise Linking VM Redhat Linux AS4.7 X64–Server Configuration

      [root@localhost ~]# vi /etc/inittab ## inittab       This file describes how the INIT process shou ...

  8. Android开发之获取时间SystemClock

    转载:http://blog.csdn.net/tianfeng701/article/details/7562359 在Andriod中关于线程一部分中经常会遇到计算时间的操作,这里面应用较多的是S ...

  9. jquery ajax请求 清除缓存

    使用jquery里load方法或者ajax调用页面的时候会存在cache的问题,清除cache的方法: 调用jQuery.ajaxSetup ({cache:false}) 方法即可.

  10. MongoDB入门分享-笔记整理精选

    最近在学习MongoDB,怕以后忘记,自己做了一个整理,给不知道的小伙伴一起分享学习一下. 第一步> 首先到官网下载,安装MongoDB.(注意MongoDB还有一个可视化管理工具叫: Mong ...