JavaScript获取样式

时间:2010-11-13 14:03:28

标签: javascript css styling

是否可以使用JavaScript获取对象的所有样式?类似的东西:


main.css
-------
#myLayer {
  position: absolute;
  width: 200px;
  height: 100px;
  color: #0000ff;
}

main.js
-------
var ob = document.getElementById("myLayer");
var pos = ob.(getPosition);
// Pos should equal "absolute" but
// ob.style.position would equal null
// any way to get absolute?


3 个答案:

答案 0 :(得分:16)

您正在谈论所谓的 Computed Style ,请查看这些文章,了解如何获取它:

从上一篇文章开始,这是一个函数:

function getStyle(oElm, strCssRule){
    var strValue = "";
    if(document.defaultView && document.defaultView.getComputedStyle){
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
    }
    else if(oElm.currentStyle){
        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
            return p1.toUpperCase();
        });
        strValue = oElm.currentStyle[strCssRule];
    }
    return strValue;
}

如何使用

CSS:

/* Element CSS*/
div#container{
    font: 2em/2.25em Verdana, Geneva, Arial, Helvetica, sans-serif;
}

JS:

var elementFontSize = getStyle(document.getElementById("container"), "font-size");

答案 1 :(得分:2)

Polyfill使用javascript获取当前CSS样式的元素...访问link了解更多信息

/**
* @desc : polyfill for getting the current CSS style of the element
* @param : elem - The Element for which to get the computed style.
* @param : prop - The Property for which to get the value
* @returns : The returned style value of the element
**/
var getCurrentStyle = function (ele, prop) {

var currStyle;
if (!window.getComputedStyle) {
    currStyle = ele.currentStyle[prop];
} else {
    currStyle = window.getComputedStyle(ele).getPropertyValue(prop);
}

return currStyle;
}


/** How to use **/
var element = document.getElementById("myElement");
getCurrentStyle(element, "width"); // returns the width value   

答案 2 :(得分:1)

您可以使用:

var ob = document.getElementById("myLayer");
var pos = ob.style.position;

每个CSS属性都有自己的对象模型。通常那些包含' - '的css属性是使用java模型编写的。

例如:

//getting background-color property
var ob = document.getElementById("myLayer");
var color = ob.style.backgroundColor;

如果要获取为对象定义的所有css属性,则必须逐个列出它们,因为即使您没有在样式表中设置属性,对象也会使用默认值。