使用JavaScript读取元素的CSS属性

时间:2011-10-25 19:15:50

标签: javascript css

因此,如果有一个css文件链接到网页,如:

<link href="style.css" rel="stylesheet" type="text/css">

我希望读取某个属性,例如div有className ='layout',我想用JavaScript读取这个属性的详细信息,我该怎么做?

我已经搜索了很多但几乎没有运气,请建议。

1 个答案:

答案 0 :(得分:11)

您有两种选择:

  1. 手动枚举和解析document.styleSheets对象(不推荐,除非您想要获取某个选择器定义的所有特定样式属性)。
  2. 创建与选择器匹配的元素,并使用getComputedStylecurrentStyle(IE)方法获取属性值。
  3. 在您的示例中,尝试获取具有color的div的某个属性(例如:class="layout"):

    function getStyleProp(elem, prop){
        if(window.getComputedStyle)
            return window.getComputedStyle(elem, null).getPropertyValue(prop);
        else if(elem.currentStyle) return elem.currentStyle[prop]; //IE
    }
    window.onload = function(){
        var d = document.createElement("div"); //Create div
        d.className = "layout";                //Set class = "layout"
        alert(getStyleProp(d, "color"));       //Get property value
    }
    

    关于您的问题的评论,另一个功能:
    下面的函数将忽略当前元素的内联样式定义。如果您想知道从样式表继承的样式定义(没有父元素的继承样式定义),则遍历树,并临时擦除.cssText属性,如下面的函数所示:

    function getNonInlineStyle(elem, prop){
        var style = elem.cssText; //Cache the inline style
        elem.cssText = "";        //Remove all inline styles
        var inheritedPropValue = getStyle(elem, prop); //Get inherited value
        elem.cssText = style;     //Add the inline style back
        return inheritedPropValue;
    }