Lerne mit der Spezifität vorherzusagen, welche CSS-Regel gewinnt, und nutze die Vererbung, um weniger Code zu schreiben.
Diese Lektion in Kodokon öffnenDu schreibst eine Regel, lädst die Seite neu … und nichts ändert sich. Meistens ist nicht ein Bug schuld, sondern die Kaskade. Wenn mehrere Regeln dasselbe Element ansprechen, löst der Browser den Konflikt in dieser Reihenfolge auf: die Herkunft der Regel (Browser-Stile, dann deine), die Spezifität des Selektors und schließlich die Reihenfolge im Code. Wenn du diesen Mechanismus beherrschst, sparst du dir Stunden an Debugging.
p {
color: gray;
}
.article p {
color: navy;
}Die Spezifität wird als dreiteilige Punktzahl berechnet: (IDs, Klassen, Elemente). #menu erreicht 1-0-0, .nav-link erreicht 0-1-0, a erreicht 0-0-1. Du vergleichst von links nach rechts: #menu (1-0-0) schlägt .nav .link .active (0-3-0), sogar mit drei Klassen. Kopfübung: Wer gewinnt zwischen header nav a (0-0-3) und .main-link (0-1-0)? Die Klasse, denn eine Klasse wiegt schwerer als beliebig viele Elemente.
header nav a {
color: steelblue;
}
.main-link {
color: crimson;
}Die Vererbung ist dein Verbündeter, um weniger Code zu schreiben: Textbezogene Eigenschaften (color, font-family, font-size, line-height) werden automatisch an Nachfahren weitergegeben. Box-Eigenschaften (margin, padding, border, width) werden nicht vererbt - zum Glück, sonst würde jedes Kind den Rahmen seines Elternelements erben. Definiere deine Typografie also einmal, auf der höchsten Ebene.
body {
font-family: "Inter", sans-serif;
color: #1f2937;
line-height: 1.6;
}#intro { color: red; }, dann .text { color: blue; }. Welche Farbe wird angewendet?