Es gibt verschiedene Möglichkeiten, wie Eigenschaften überschrieben werden können. Vorausgesetzt, Sie haben
.left { background: blue }
zB würde eine der folgenden Optionen es überschreiben:
a.background-none { background: none; }
body .background-none { background: none; }
.background-none { background: none !important; }
Die ersten beiden "gewinnen" nach Selektorspezifität; der dritte gewinnt mit !important
einem stumpfen Instrument.
Sie können Ihre Stylesheets auch so organisieren, dass zB die Regel
.background-none { background: none; }
gewinnt einfach durch Ordnung, dh , indem sie nach einer ansonsten gleich „powerful“ -Regel. Dies führt jedoch zu Einschränkungen und erfordert, dass Sie bei der Neuorganisation von Stylesheets vorsichtig sind.
Dies sind alles Beispiele für die CSS-Kaskade , ein entscheidendes, aber weithin missverstandenes Konzept. Es definiert die genauen Regeln für die Lösung von Konflikten zwischen Stylesheet-Regeln.
PS Ich habe verwendet left
und background-none
wie sie in der Frage verwendet wurden. Sie sind Beispiele für Klassennamen, die nicht verwendet werden sollten, da sie bestimmte Renderings und keine strukturellen oder semantischen Rollen widerspiegeln.
left
undbackground-none
sollte vermieden werden?button
,name-label
usw.). Andere sind der Meinung , dass CSS unkontrollierbar wird , wenn Sie diesen Ansatz verwenden , und Sie sollten „Utility-first“ oder „funktional“ CSS verwenden , in denen Klassen Eigenschaftswerte entsprechen (zBmargin-top-4
,width-10
usw.). Historisch gesehen war der "semantische" Ansatz vorherrschend, während der "funktionale" Ansatz in letzter Zeit Anhänger gefunden hat. Probieren Sie beides bei einem mittelgroßen Projekt aus und entscheiden Sie dann selbst, welches überlegen ist.Verwenden
!important
Sie es einfach, um zu überschreibenObwohl es sich um eine schlechte Praxis handelt,
!important
die für Dienstprogrammklassen nützlich sein kann, müssen Sie sie nur verantwortungsbewusst verwenden. Überprüfen Sie Folgendes: Wenn die Verwendung von wichtig die richtige Wahl istquelle
Alternativ zum
important
Schlüsselwort können Sie den Selektor spezifischer gestalten, z. B.:(Hinweis: kein Leerzeichen zwischen den Klassennamen).
In diesem Fall gilt die Regel, wenn beide
.left
und.background-none
im Klassenattribut aufgeführt sind (unabhängig von der Reihenfolge oder Nähe).quelle
Sie sollten überschreiben, indem Sie die Spezifität Ihres Stils erhöhen . Es gibt verschiedene Möglichkeiten, die Spezifität zu erhöhen. Die Verwendung der
!important
Effektspezifität ist eine schlechte Praxis, da sie die natürliche Kaskadierung in Ihrem Stylesheet unterbricht.Das folgende Diagramm von css-tricks.com hilft Ihnen dabei, die richtige Spezifität für Ihr Element basierend auf einer Punktestruktur zu erstellen. Welche Spezifität höhere Punkte hat, wird gewinnen. Klingt nach einem Spiel - nicht wahr?
Beispielberechnungen zur Kasse hier auf css-tricks.com . Dies wird Ihnen helfen, das Konzept sehr gut zu verstehen und es dauert nur 2 Minuten.
Wenn Sie dann verschiedene Spezifitäten selbst herstellen und / oder vergleichen möchten, versuchen Sie diesen Spezifitätsrechner: https://specificity.keegan.st/ oder verwenden Sie einfach herkömmliches Papier / Bleistift.
Weitere Informationen finden Sie in MDN Web Docs .
Alles Gute für die Nichtbenutzung
!important
.quelle
Wenn Sie die
bakground-none
Klasse nach den anderen Klassen auflisten, überschreiben ihre Eigenschaften die bereits festgelegten. Es besteht keine Notwendigkeit,!important
hier zu verwenden .Beispielsweise:
und
Der Link hat keinen roten Hintergrund. Bitte beachten Sie, dass dies nur Eigenschaften überschreibt, deren Selektor weniger oder gleich spezifisch ist.
quelle
LIFO ist die Art und Weise, wie der Browser CSS-Eigenschaften analysiert. Wenn Sie Sass verwenden, deklarieren Sie eine Variable mit dem Namen
Verwenden Sie es, anstatt Werte wie Rot oder Blau direkt zuzuweisen. Wenn Sie überschreiben möchten, weisen Sie den Wert einfach neu zu
dann
es sollte reibungslos überschreiben. Die Verwendung von "! Important" ist nicht immer die richtige Wahl. Es ist nur ein Hotfix
quelle