Home >Web Front-end >CSS Tutorial >How Can I Retrieve CSS Property Values with Their Original Units in JavaScript?

How Can I Retrieve CSS Property Values with Their Original Units in JavaScript?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 16:36:10640browse

How Can I Retrieve CSS Property Values with Their Original Units in JavaScript?

Retrieving CSS Property Values in Their Specified Units

In web development, it can be essential to retrieve CSS property values as they were originally defined, maintaining their specified units. While getComputedStyle and jQuery's css() method provide values in pixels, there are scenarios where obtaining the raw CSS value is crucial. Here's how you can achieve this in Google Chrome without relying on frameworks:

Chrome's Elemental Inspector

Chrome's element inspector offers a valuable feature: the ability to display CSS property values as they were set, providing a visual cue for the intended value. This suggests that Chrome has the ability to retrieve this information programmatically.

getMatchedStyle Function

To achieve this in code, we utilize the getMatchedCSSRules() method to obtain matched rules, which we then iterate through in reverse order of priority. We prioritize element styles over external rules and check for important properties. The getMatchedStyle function looks like this:

function getMatchedStyle(elem, property){
    // Element style has highest priority
    var val = elem.style.getPropertyValue(property);

    // Stop if important
    if(elem.style.getPropertyPriority(property))
        return val;

    // Get matched rules
    var rules = getMatchedCSSRules(elem);

    // Iterate rules backwards, prioritizing highest priority
    for(var i = rules.length; i --> 0;){
        var r = rules[i];

        var important = r.style.getPropertyPriority(property);

        // Reset if more important or not yet set
        if(val == null || important){
            val = r.style.getPropertyValue(property);

            // Stop if important
            if(important)
                break;
        }
    }

    return val;
}

Example

Consider the following HTML and CSS:

<div class="b">div 1</div>
<div>
div      { width: 100px; }
.d3      { width: auto !important; }
div#b    { width: 80%;   }
div#c.c  { width: 444px; }
x, div.a { width: 50%;   }
.a       { width: 75%;   }

With the given code, the following widths are retrieved:

div 1:  100px
div 2:  50%
div 3:  auto
div 4:  44em

This highlights the ability to retrieve CSS property values in their specified units, providing greater flexibility and precision in script-based style manipulation tasks.

The above is the detailed content of How Can I Retrieve CSS Property Values with Their Original Units in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn