Heim >Web-Frontend >CSS-Tutorial >Wie kann ich einen CSS-Vererbungsbaum mit reinem JavaScript überprüfen?

Wie kann ich einen CSS-Vererbungsbaum mit reinem JavaScript überprüfen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 00:28:11381Durchsuche

How Can I Inspect a CSS Inheritance Tree Using Pure JavaScript?

Inspizieren des CSS-Vererbungsbaums mit JavaScript

Stellen Sie sich eine Webseite mit einem p-Element mit der ID „description“ vor:

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

<p>

Wenn der Browser dieses Element rendert, führt er alle anwendbaren CSS-Regeln in einem einzigen Vererbungsbaum zusammen. Wie können wir dies in reinem JavaScript replizieren, ohne auf Browser-Plugins angewiesen zu sein?

Lösung:

Um die auf ein Element angewendeten CSS-Regeln zu überprüfen, können wir es durchlaufen den Stylesheets des Dokuments entsprechen und mit den Selektoren des Elements übereinstimmen. Hier ist eine browserübergreifende JavaScript-Funktion, um dies zu erreichen:

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;
}

Der Aufruf von css(document.getElementById('description')) gibt ein Array von CSS-Regelzeichenfolgen zurück, die auf das Element angewendet werden, in diesem Fall:

["p { color :red; }", "#description { font-size: 20px; }"]

Diese Funktion ermöglicht Entwicklern den Zugriff auf die Quelle berechneter CSS-Regeln und hilft so beim Debuggen und Verstehen von Webseiten Styling.

Das obige ist der detaillierte Inhalt vonWie kann ich einen CSS-Vererbungsbaum mit reinem JavaScript überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn