Wird der CSS-Star-Selektor als schädlich angesehen (und warum)?

Beeinflusst der Sternselektor in CSS die Seitenrendering-performance?

Gibt es irgendwelche Vorbehalte?

* { margin:0; padding:0; } 

Wenn es um performance geht, ist Steve Souders der Mann:

  • Performance-Einfluss von CSS-Selektoren
  • Vereinfachung der CSS-Selektoren

Schamloses Zitat aus einem der Berichte:

Der Schlüssel zur Optimierung von CSS-Selektoren ist die Fokussierung auf den ganz rechts stehenden Selektor , der auch als Schlüsselauswahl bezeichnet wird (Zufall?). Hier ist ein viel teurer Selektor: A.class0007 * {}. Obwohl dieser Selektor möglicherweise einfacher aussieht, ist es für den Browser teurer, eine Übereinstimmung zu erzielen. Da sich der Browser von rechts nach links bewegt , werden zunächst alle Elemente geprüft, die mit der Schlüsselauswahl “*” übereinstimmen. Dies bedeutet, dass der Browser versuchen muss, diesen Selektor mit allen Elementen auf der Seite abzugleichen.

[Hervorhebung meiner]

Bei einigen Eigenschaften kann die Verwendung von * unerwarteten Ergebnissen führen.

 * { color: blue } li { color: red } 

Jetzt gegeben

  • text
  • , wird der Text blau sein!

    Eine Ansicht ist, dass das * nicht ein performancesproblem ist, es ist dieser gute alte Favorit – es gibt ein IE-Problem damit. Es betrifft IE 5, 5.5 und 6 sowie Macintosh-Varianten. Im Grunde gibt es etwas, das den HTML-Sternselektor-Fehler genannt wird, der wie folgt gilt:

     * html 

    Dies sollte als keine Übereinstimmung der Elemente interpretiert werden, da html root ist und kein untergeordnetes Element sein kann. IE interpretiert dies als HTML.

     * * body 

    Auch hier sollte kein Element gefunden werden, da body kein Enkelelement sein kann – obwohl es ein Kindelement von HTML ist. IE interpretiert dies als * Körper.

     * html body 

    Dies sollte keinem Element entsprechen, aber IE interpretiert dies als HTML-Text.

    Die performancesseite wird normalerweise so behandelt, dass das Anwenden von * nur bedeutet, dass der Stil auf jedes Element einer Seite angewendet wird. Ich finde selten, dass dies ein eigenständiges Problem ist – der Punkt, an dem es ein Problem werden würde, bedeutet, dass Sie wahrscheinlich sowieso zu viel Markup drin haben. Genauso wie es für alles gilt, bedeutet dies, dass Sie Ihren Code erhöhen müssen, um mit Elementen fertig zu werden, die diesen Stil nicht haben sollten. Wie bei allem anderen liegt es an Ihnen, zu entscheiden, wie die Kompromisse und das Gleichgewicht aussehen sollten.

    Da ich genau die gleiche Regel in jedem meiner Projekte verwende und keine ernsthafte Probleme mit der performance haben, würde ich sagen: Nein, soweit ich weiß.