CSS计算样式的获取
一般来说我们获取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计算样式的获取的更多相关文章
- javascript获取元素的计算样式
使用css控制页面有4种方式,分别为行内样式(内联样式).内嵌式.链接式.导入式. 行内样式(内联样式)即写在html标签中的style属性中,如<div style="width:1 ...
- JavaScript的DOM_通过计算后样式来获取
虽然可以通过 style 来获取单一值的 CSS 样式,但对于复合值的样式信息,就需要通过计算样式来获取. DOM2 级样式,window 对象下提供了 getComputedStyle()方法.接受 ...
- JavaScript获取元素CSS计算后的样式
原文链接https://www.w3ctech.com/topic/40 我们在开发过程中,有时候需要根据元素已有样式来实现一些效果,那我们应该如何通过JavaScript来获取一个元素计算后的样式值 ...
- 深入理解脚本化CSS系列第二篇——查询计算样式
× 目录 [1]getComputedStyle [2]注意事项 [3]currentStyle[4]IE 前面的话 元素的渲染结果是多个CSS样式博弈后的最终结果,这也是CSS中的C(cascade ...
- js访问CSS最终计算样式
所谓计算样式,就是嵌入式样式.外部样式表.内联样式综合的样式表现,那么如何来获取呢? "DOM2 级样式"增强了document.defaultView,提供了getCompute ...
- 获取元素计算样式getComputedStyle()与currentStyle
window.getComputedStyle()方法是标准化接口,返回一个对象,该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有CSS属性的值. 私有的CSS属性值可以通过对 ...
- JS获得css样式即获得元素的计算样式(《Javascript精粹修订版》书摘)
为HTML文档中的元素指定样式可以有3种方法:使用内嵌样式.在页面的head中对Style进行声明以及外部 CSS 文件.元素的视觉效果往往是由上述3种方式的结合或者其中某一种方式来确定的,但是内嵌样 ...
- day26—JavaScript对CSS样式的获取和修改实践
转行学开发,代码100天——2018-04-11 通过JavaScript获取和修改HTML元素及CSS属性是其一个基本功能.对于CSS样式通常有行内样式,外部样式,内嵌样式之分. 如: 行内样式: ...
- 用JS控制CSS基本样式
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp29 用JS控制CSS基本样式的方法 CSS code .class1 { ...
随机推荐
- NGUI中Button与原生2D精灵的混合使用
一些废话 每一篇的首段都是这个“一些废话”,原因是我太能逼逼了,不逼逼一些废话我就觉得难受.这是我第四篇关于Unity的博文,前两篇还是去年写的,“从一点儿不会开始”系列,类似教程和学习笔记的博文,这 ...
- Debug模式应用程序输出Debug调试信息(现成的宏定义,用于格式化打印信息)
// Debug模式,主要输出一些调试的信息. #ifdef UNICODE #define _FILE_ _STR2WSTR(__FILE__) #define _FUNCTION ...
- arcengine C# 读写lyr(转)
写lyr { IFeatureLayer LineLayer = axMapControl1.get_Layer(0) as IFeatureLayer; ILayerFile ...
- django定期执行任务
要在django项目中定期执行任务,比如每天一定的时间点抓取数据,刷新数据库等,可以参考stackoverflow的方法,先编写一个manage.py命令,然后使用crontab来定时执行这个命令. ...
- 素数筛法--SPOJ Problem 2 Prime Generator
质数(prime number)又称素数,除了1和它本身外,不能整除以其他自然数,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.最小的质数是2. 要判断一个整数N是不是质数很简单, ...
- servlet基础讲解
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- 3D开发--CopperCube
CopperCube的常用接口,以及如何用javascript语言控制场景中的人物动作,或者获取任务的位置等信息
- UVa 116 (多段图的最短路) Unidirectional TSP
题意: 有一个m行n列的正整数环形矩阵(即矩阵第一行的上一行是最后一行,最后一行的下一行是第一行),从第一列的任意位置出发,每次只能向右,右上,右下三个方向行走,输出路径及路径上所有数之和的最大值,多 ...
- PHP适合做大型网站吗?
1. 对递归的不良支持 递归是一种函数调用自身的机制.这是一种强大的特性可以把某些复杂的东西变得很简单.有一个使用递归的例子是快速排序(quicksort).不幸的是,PHP并不擅长递归.Zeev,一 ...
- Android基础_2 Activity线性布局和表格布局
在activity的布局中,线性布局和表格布局是最简单的,这次分别从线性布局,表格布局以及线性布局和表格混合布局做了实验,实验中只需要编写 相应的xml的代码,java代码不需要更改,因为我们这里只是 ...