Read CSS property of an element using JavaScript

前端 未结 1 1239
攒了一身酷
攒了一身酷 2020-11-28 14:06

So if there is a css file linked to a webpage like:


and i want to read

相关标签:
1条回答
  • 2020-11-28 14:23

    You have got two options:

    1. Manually enumerating and parsing the document.styleSheets object (not recommended, unless you want to get all specific style properties defined by a certain selector).
    2. Create an element matching the selector, and use the getComputedStyle or currentStyle (IE) method to get the property value.

    In your example, attempt to get a certain property (let's say: color) of a div with 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
    }
    

    Regarding comment at your question, another function:
    The function below will ignore inline style definitions of the current element. If you want to know the style definitions inherited from a stylesheet (without inherited style definitions of the parent elements), traverse the tree, and temporary wipe the .cssText property, as shown in the funcion below:

    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;
    }
    
    0 讨论(0)
提交回复
热议问题