首頁  >  文章  >  web前端  >  如何在純 JavaScript 中檢索影響元素的所有 CSS 規則?

如何在純 JavaScript 中檢索影響元素的所有 CSS 規則?

DDD
DDD原創
2024-11-26 10:56:11255瀏覽

How can I retrieve all CSS rules affecting an element in pure JavaScript?

確定影響純JavaScript 中元素的所有CSS 規則

在Web 開發中,檢查瀏覽器載入的原始樣式表僅提供部分資訊了解應用於元素的CSS 規則。這是因為瀏覽器編譯所有 CSS 規則並將它們應用到基於繼承的元素,從而產生複雜的繼承樹,該繼承樹在樣式表中不會立即顯現出來。

對於尋求純 JavaScript 解決方案來重現此功能的開發人員,檢索在不依賴其他瀏覽器插件的情況下,有關影響元素的計算 CSS 規則的詳細資訊構成了重大挑戰。不過,這裡有一個全面的解決方案:

function css(el) {
    var sheets = document.styleSheets, ret = [];
    el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector 
        || el.msMatchesSelector || el.oMatchesSelector;
    for (var i in sheets) {
        var rules = sheets[i].rules || sheets[i].cssRules;
        for (var r in rules) {
            if (el.matches(rules[r].selectorText)) {
                ret.push(rules[r].cssText);
            }
        }
    }
    return ret;
}

此函數將一個元素作為輸入,並傳回一個包含每個符合規則的 CSS 文字的陣列。

為了說明其用法,請考慮以下內容HTML 和CSS:

HTML

<style type="text/css">
    p { color :red; }
    #description { font-size: 20px; }
</style>

<p>

JavaScript

var rules = css(document.getElementById('description'));
console.log(rules); // ['color: red;', 'font-size: 20px;']

在此範例中,該函數識別兩個匹配的CSS規則:為所有

指定紅色。元素,另一個將 ID 為 #description 的元素的字體大小設為 20 像素。

傳回的陣列允許透過引用 CSSRule 物件文件進一步探索每個規則的詳細資訊。這種方法提供了一種全面且與瀏覽器相容的方法,用於提取應用於元素的計算 CSS 規則,而無需額外的插件,使開發人員能夠深入檢查和調試其樣式。

以上是如何在純 JavaScript 中檢索影響元素的所有 CSS 規則?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn