Das Anwenden von Stilen auf das Body-Tag wird also auf die gesamte Seite angewendet
body { font-family: Verdana }
wird auf die gesamte Seite angewendet. Dies könnte auch mit gemacht werden
* {font-family: Verdana}
Dies würde für alle Elemente gelten und daher den gleichen Effekt zu haben scheinen.
Ich verstehe das Prinzip, dass in erster Linie der Stil auf ein Tag, einen Textkörper für die gesamte Seite, angewendet wird, während im zweiten Beispiel die Schriftart auf jedes einzelne HTML-Element angewendet wird. Was ich frage, ist, was der praktische Unterschied dabei ist, was die Auswirkungen sind und was ein Grund, eine Situation oder eine bewährte Methode ist, die dazu führt, dass man sich gegenseitig nutzt.
Ein Nebeneffekt ist sicherlich die Geschwindigkeit (+1 Rob). Am meisten interessiert mich der eigentliche Grund, in Bezug auf die Funktionalität einen über den anderen zu wählen.
quelle
Antworten:
Funktionsunterschiede zwischen diesen beiden Optionen des CSS-Selektors ... (meine Meinung)
Körper
Der Universal Selector * (alle Elemente)
Vorschläge
quelle
Versuchen Sie so etwas
gegen
Und sehen Sie, welche Stile auf die Zellen der Tabelle angewendet werden.
Es gibt einen Unterschied zwischen "auf das gesamte Dokument angewendet" und "auf jedes Element des Dokuments angewendet", wenn Sie mit kaskadierenden Stylesheets arbeiten.
Durch Anwenden eines Kaskadenstils auf den Body wird dieser auf alle Tags im Body angewendet, bis ein Tag ihn überschreibt. Dann wird der überschriebene Stil auf alle Tags in diesem angewendet.
Es gibt jedoch einige Stile, die nicht kaskadieren, wie z. B. Rand und Polsterung (normalerweise dort, wo dies keinen Sinn ergibt). Diese können nur auf bestimmte Tags angewendet werden, und hier kann ein Platzhalter nützlich sein (wenn auch selten).
Die meisten nicht kaskadierenden Stile haben auch den Wert "erben" (z. B.
margin: inherit
), was bedeutet, dass "die Werte des übergeordneten Tags übernommen werden".quelle
Ich habe die vollständigen Details vergessen, aber mit dem * Selektor wird die Leistung verlangsamt, da jedes einzelne Element ausgewertet wird, wenn der Browser das CSS analysiert und den Stil anwendet. Wenn Sie die Schriftart in diesem Fall auf das übergeordnete Element setzen, wird für jedes Element eine Referenz erstellt, und zusätzliche Arbeit ist nicht erforderlich.
Es gibt auch einige andere Probleme, aber ich erinnere mich nicht an alle und habe sie seit Jahren nicht mehr verwendet.
quelle
Die allgemeine Richtlinie für ein gutes CSS-Design soll so spezifisch wie möglich sein, jedoch nicht mehr.
In Ihrem Beispiel wäre das Anwenden des Stils auf das Körperelement so spezifisch wie möglich und sicherlich spezifischer als der Selektor '*'.
quelle
Wie andere bereits erwähnt haben,
body { font-family: Verdana }
wird die Schriftart Verdena nur für diejenigen Elemente ausgewählt, die die Eigenschaft von ihren Eltern erben,font-style
sodass auch alle Eltern die Eigenschaft erben, die letztendlich dasbody
Element bilden, und* {font-family: Verdana}
die Schriftart Verdena für alle Elemente auswählen . Ich möchte den Unterschied anhand eines Beispiels veranschaulichen:Körperwähler verwenden:
Universal Selelctor verwenden
*
:Verwenden Sie die CSS- und HTML-Codes der Beispiele, bei denen Sie erkennen, dass das
<input>
Element den Schriftstil überhaupt nicht erbt. Daher erhält alles, was Sie in das Formular eingeben, den Standard-Schriftstil des User-Agent-Stylesheets. Im zweiten Beispiel*
legt der universelle Selektor den Schriftstil für jedes Element einschließlich desinput
Elements explizit fest .quelle