一般来说我们获取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. python 解析 xml

    <taskList nextId="62292"> <task module="reliability" owner="vprovo ...

  2. 2014--9=17 软工二班 MyEclipse blue==3

    package cn.rwkj.test; import java.io.IOException; import java.io.InputStream; import java.net.Server ...

  3. Java API —— 异常

    1.异常:异常就是Java程序在运行过程中出现的错误. 2.异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象 ...

  4. ASCII 字符代码表

  5. [Codeforces677B]Vanya and Food Processor(模拟,数学)

    题目链接:http://codeforces.com/contest/677/problem/B 题意:n个土豆,每个土豆高ai.现在有个加工机,最高能放h,每次能加工k.问需要多少次才能把土豆全加工 ...

  6. Effective C++学习笔记 条款02:尽量以const,enum,inline替换 #define

    尽量使用const替换 #define定义常量的原因: #define 不被视为语言的一部分 宏定义的常量,预处理器只是盲目的将宏名称替换为其的常量值,导致目标码中出现多分对应的常量,而const定义 ...

  7. SQL Server:把CSV文件导入到SQL Server表中

    有时候我们可能会把CSV中的数据导入到某个数据库的表中,比如做报表分析的时候. 对于这个问题,我想一点也难不倒程序人员吧!但是要是SQL Server能够完成这个任务,岂不是更好! 对,SQL Ser ...

  8. Android、iPhone和Java三个平台一致的加密工具

    先前一直在做安卓,最近要开发iPhone客户端,这其中遇到的最让人纠结的要属Java.Android和iPhone三个平台加解密不一致的问题. 因为手机端后台通常是用JAVA开发的Web Servic ...

  9. 如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。

    由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口, ...

  10. wdcp系统升级mysql5.7.11

    1.下载解压 下载地址为:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz ...