Lassen Sie uns dieses Thema speziell behandeln. (Trommelwirbel!)
Der beste Weg, dies zu erklären, ist, mit einem Beispiel zu beginnen, bei dem die Spezifität verwirrend wird und sich vielleicht nicht so verhält, wie Sie es erwarten würden. Dann werden wir uns genauer ansehen, wie der tatsächliche Spezifitätswert berechnet wird, um zu bestimmen, welcher Selektor Vorrang hat.
Hier ist eine einfache unsortierte Liste
<ul id="summer-drinks">
<li>Whiskey and Ginger Ale</li>
<li>Wheat Beer</li>
<li>Mint Julip</li>
</ul>
Jetzt möchten Sie eines dieser Getränke als Ihr Lieblingsgetränk kennzeichnen und dessen Stil leicht ändern. Sie benötigen dafür einen Ankerpunkt, also wenden Sie ihn über einen Klassennamen auf das Listenelement an.
<ul id="summer-drinks">
<li class="favorite">Whiskey and Ginger Ale</li>
<li>Wheat Beer</li>
<li>Mint Julip</li>
</ul>
Jetzt öffnen Sie Ihr CSS und gestalten Ihre neue Klasse
.favorite {
color: red;
font-weight: bold;
}
Dann werfen Sie einen Blick auf Ihre Arbeit, aber ach, sie hat nicht funktioniert! Der Text Ihres Lieblingsgetränks ist nicht rot oder fett geworden! Hier ist etwas Merkwürdiges am Werk.
Wenn Sie tiefer in das CSS eindringen, finden Sie dies
ul#summer-drinks li {
font-weight: normal;
font-size: 12px;
color: black;
}
Da liegt Ihr Problem. Zwei verschiedene CSS-Selektoren geben diesem Text an, welche Farbe und welche Schriftstärke er haben soll. Es gibt nur eine Angabe für die Schriftgröße, also wird diese eindeutig wirksam. Das sind keine „Konflikte“ an sich, aber der Browser muss entscheiden, welche dieser Angaben er berücksichtigen soll. Dies geschieht durch Befolgen einer standardmäßigen Reihe von Spezifitätsregeln.
Ich denke, das verwirrt manche Anfänger, weil sie das noch nicht ganz sortiert haben. Sie denken vielleicht, weil die .favorite-Anweisung „weiter unten im CSS“ steht oder weil die class=”favorite” „näher am eigentlichen Text“ im HTML liegt, dass dies diejenige sein wird, die „gewinnt“.
Tatsächlich spielt die Reihenfolge der Selektoren in Ihrem CSS eine Rolle und die „weiter unten“ stehende gewinnt tatsächlich, wenn die Spezifitätswerte genau gleich sind. Zum Beispiel
.favorite {
color: red;
}
.favorite {
color: black;
}
Die Farbe wird schwarz sein... aber ich schweife ab.
Der Punkt ist, Sie wollen so spezifisch sein, wie es sinnvoll ist, wann immer Sie die Gelegenheit dazu haben. Selbst bei dem einfachen Beispiel oben wird es Ihnen schließlich offensichtlich werden, dass die bloße Verwendung eines Klassennamens, um dieses „Lieblingsgetränk“ anzusprechen, nicht ausreicht oder selbst wenn es funktionieren würde, nicht sehr sicher wäre. Es wäre klug gewesen, dies zu verwenden
ul#summer-drinks li.favorite {
color: red;
font-weight: bold;
}
Das nenne ich „so spezifisch sein, wie es sinnvoll ist“. Sie könnten tatsächlich viel spezifischer sein und etwas wie dies verwenden
html body div#pagewrap ul#summer-drinks li.favorite {
color: red;
font-weight: bold;
}
Aber das ist übertrieben. Es macht Ihr CSS schwerer lesbar und bringt keine wirklichen Vorteile. Eine weitere Möglichkeit, den Spezifitätswert für Ihre „.favorite“-Klasse zu erhöhen, ist die Verwendung der !important-Deklaration.
.favorite {
color: red !important;
font-weight: bold !important;
}
Ich habe einmal gehört, dass !important wie der Jedi-Gedankentrick für CSS ist. Tatsächlich ist es das, und Sie können Ihren Willen dem Styling von Elementen aufzwingen, indem Sie es verwenden. Aber !important erzwingt diesen Willen durch drastische Erhöhung der Spezifität der Eigenschaft dieses bestimmten Selektors.
Die !important-Deklaration kann bei Missverständnissen leicht missbraucht werden. Sie eignet sich am besten, um Ihr CSS sauberer zu halten, in Beispielen, bei denen Sie wissen, dass Elemente mit einem bestimmten Klassenselektor eine bestimmte Formatierung verwenden sollen, egal was passiert. Umgekehrt sollte sie nicht einfach als schnelle Krücke verwendet werden, um das Styling von etwas zu überschreiben, anstatt herauszufinden, wie das CSS vom ursprünglichen Autor strukturiert wurde und funktioniert hat.
Eines meiner klassischen Beispiele ist
.last {
margin-right: 0 !important;
}
Ich benutze das oft in Situationen, in denen es mehrere gefloatete Blöcke gibt, für den letzten Block rechts in einer Reihe. Das stellt sicher, dass der letzte Block keinen rechten Rand hat, der ihn davon abhalten würde, eng an die rechte Kante seines Elternteils zu stoßen. Jeder dieser Blöcke hat wahrscheinlich spezifischere CSS-Selektoren, die den rechten Rand von vornherein zuweisen, aber !important bricht dadurch und kümmert sich mit einer einfachen/sauberen Klasse darum.
Berechnung des CSS-Spezifitätswerts
Warum ist unser erster Versuch, die Farbe und Schriftstärke zu ändern, fehlgeschlagen? Wie wir gelernt haben, lag es daran, dass die bloße Verwendung des Klassennamens allein einen geringeren Spezifitätswert hatte und von dem anderen Selektor übertrumpft wurde, der die unsortierte Liste mit dem ID-Wert ansprach. Die wichtigen Wörter in diesem Satz waren Klasse und ID. CSS weist Klassen und IDs stark unterschiedliche Spezifitätsgewichte zu. Tatsächlich hat eine ID einen unendlich höheren Spezifitätswert! Das heißt, keine Anzahl von Klassen allein kann eine ID ausgleichen.
Werfen wir einen Blick darauf, wie die Zahlen tatsächlich berechnet werden

Anders ausgedrückt
- Wenn das Element eine Inline-Formatierung hat, gewinnt diese automatisch1 (1.000 Punkte)
- Für jeden ID-Wert werden 0,1,0,0 Punkte vergeben
- Für jeden Klassenwert (oder Pseudoklasse oder Attributselektor) werden 0,0,1,0 Punkte vergeben
- Für jede Elementreferenz werden 0,0,0,1 Punkt vergeben
Sie können die Werte im Allgemeinen so lesen, als wären sie einfach eine Zahl, wie 1.000,0,0 „1000“ ist und daher eindeutig über einer Spezifität von 0,1,0,0 oder „100“ gewinnt. Die Kommas sind dazu da, uns daran zu erinnern, dass dies kein „Basis-10“-System ist, insofern Sie technisch einen Spezifitätswert von z. B. 0,1,13,4 haben könnten – und diese „13“ nicht überläuft, wie es ein Basis-10-System tun würde.
Beispielberechnungen



Update: Die :not()-Pseudo-Klasse fügt keinen eigenen Spezifitätswert hinzu, nur das Innere der Klammern wird zum Spezifitätswert addiert.


Wichtige Hinweise
- Der universelle Selektor (*) hat keinen Spezifitätswert (0,0,0,0)
- Pseudo-Elemente (z. B. :first-line) erhalten 0,0,0,1 im Gegensatz zu ihren Pseudo-Klassen-Geschwistern, die 0,0,1,0 erhalten.
- Die Pseudo-Klasse :not() fügt selbst keine Spezifität hinzu, nur das, was sich in ihren Klammern befindet.
- Der Wert !important, der an einen CSS-Eigenschaftswert angehängt wird, ist ein automatischer Gewinn. Er überschreibt sogar Inline-Stile aus dem Markup. Der einzige Weg, wie ein !important-Wert überschrieben werden kann, ist eine weitere !important-Regel, die später in der CSS mit gleicher oder höherer Spezifität deklariert wird, andernfalls. Sie könnten es sich so vorstellen, als ob Sie der Spezifität 1.000.000 hinzu fügen würden.
Ressourcen
- Smashing Magazine hat einen ziemlich umfassenden Artikel über CSS-Spezifität
- W3-Spezifikation zur Spezifität in CSS3
- IE Quirks (versuchen Sie, diese Seite in Fx und dann in IE anzuzeigen)
- Fuzzy Specificity Hack: IE (sogar Beta 8!) und ältere Opera-Browser haben einen Bug, der den korrekten Selektor unter bestimmten Umständen korrekt behandelt.
Hallo!
Danke für diesen Artikel! Ich habe mir in letzter Zeit sehr spezifische Stile angeeignet. Außerdem gefällt mir sehr gut, wie Sie Ihre CSS-Datei aus Ihren Screencasts layouten! Das hat sehr geholfen und jetzt sind meine CSS-Dateien viel einfacher zu lesen.
Machen Sie gute Arbeit an der Seite!
ChaZ
Ich gehöre zu den „verwirrten Anfängern“, die im Artikel erwähnt werden. :) Das hilft sehr. Das wird definitiv gespeichert und oft nachgeschlagen.
Danke...
Ich würde auch empfehlen, den CSS Spezifitätsrechner zu prüfen und zu testen. Fügen Sie einfach Ihr CSS ein und er berechnet die Spezifität für Sie. Das ist sehr nützlich, wenn Sie an großen CSS-Dateien (statt an mehreren kleineren) arbeiten.
Das macht Spezifität viel einfacher zu verstehen. Wenn ich darüber nachdenke, wäre das ein schönes CSS-Editor-Plugin!
Tolle Erklärung, liebe die Grafiken.
Danke für den Beitrag. Ich werde die Berechnung neben der Reihenfolge des Codes beachten :)
Ich habe Spezifität immer verstanden, aber ich habe die Berechnungsmethode nie gesehen, ziemlich raffiniert.
Tolle Erklärung. Die Analogie des Punktesystems macht es sehr einfach zu verstehen. Danke
Danke für diesen exzellenten und nützlichen Artikel! Das ist eine interessante Methode.
Firebug kann Ihnen das „Herumwühlen in Ihrem CSS“ ersparen, da es schön anzeigt, welche Selektoren auf ein beliebiges Element angewendet werden.
Sehr gut geschrieben.
Danke.
Ich habe selten diese Probleme, aber wenn ich sie habe; das erste, was mir einfällt, ist Firebug.
Aber was für mich neu ist, ist die „Berechnung des CSS-Spezifitätswerts“. Ich habe davon in einem Buch gelesen, aber es ist mir nicht klar geworden. Jetzt ist es so einfach zu merken.
Danke nochmal.
Beste Grüße
Ich bin es gewohnt, in der Firebug-Symbolleiste nachzuschauen, wenn ich es brauche, aber ja, Ihre Grafiken verdeutlichen es. Schön!
Wow, ich glaube wirklich, dass dieser Beitrag für viele Leute ein weiterer „Aha-Moment“ ist. Schöne Illustrationen auch.
Grüße aus Deutschland
Nur um klarzustellen, dass der Spezifitätsrechner nicht ganz genau ist. Wenn Sie beispielsweise ein Element mit 11 Klassen haben, übertrifft es kein Element mit einem einzigen ID-Selektor.
Zum Beispiel,
.a .b .c .d .e .f .g .h .i .j a.k { color:red; }
#myel {color:blue;}
<span class=“a b c d e f g h i j k” id=“myel”>wäre immer noch blau.</span>
Die Wahrscheinlichkeit dafür ist gering, aber es ist wichtig zu beachten.
Tolle Sachen für knifflige CSS-Tabellen im Design. Danke
Um Jonathon Snooks Kommentar noch zu ergänzen:
Die Berechnung basiert nicht auf der „Addition“ der Werte. Die Spezifitätsberechnung basiert stattdessen darauf, dass der linkeste Wert der höchste ist. Wenn zwei konkurrierende Selektoren übereinstimmende Werte für eine bestimmte Identifikationseinheit haben, wird der Vergleich fortgesetzt, bis zum nächsten Wert links, bis ein größerer Wert gefunden wird.
Ich habe diesen Teil in einer Tabelle in meinem Artikel über CSS-Spezifität hervorgehoben.
Etwas, das ich in CSS immer wissen wollte, ist, ob es möglich ist, Shortcuts für Farben zu erstellen.
Im Moment muss ich bei meinen Websites, wenn ich den Farbcode einer Schrift ändern muss, alle Klassen überprüfen, bei denen die Farbe angewendet ist.
Wenn ich jedoch einen „Shortcut“ namens „myCustomYellowColor“ hätte, der einen benutzerdefinierten Farbcode hätte, könnte ich ihn mit einer einzigen Zeile auf einmal ändern.
Ich habe es nie ausprobiert, aber das soll das tun, was Sie fragen: LESS
pablo, Sie können keine Konstanten oder Variablen in CSS erstellen, aber es ist etwas, das ich selbst auch schon gewünscht habe. Der beste Weg, den ich gefunden habe, ist, die gemeinsamen Farben an einem Ort zu speichern. Zum Beispiel
Eine weitere Option, wenn Sie etwas Komplexeres suchen, ist Shaun Inmans CSS Cacheer.
Pablo – CSS-Variablen sind auf dem Weg. Sie sind in den neuesten Builds von Webkit (Safari) verfügbar, aber werden noch eine Weile nicht Mainstream sein.
Wenn Sie Ihre Stile in Typografie und Struktur/Layout aufteilen, kann das die Änderung erheblich erleichtern – je nach Größe Ihres Stylesheets kann es jedoch die Sache etwas schwieriger machen, Dinge zu finden – z. B. wenn Sie nach allen Stilen eines bestimmten Elements/Selektors suchen, müssen Sie mehrere Orte referenzieren, anstatt nur die kombinierte Typografie/Struktur.
Jonathan hat völlig Recht, und der Artikel ist in diesem speziellen Punkt zutiefst irreführend. Spezifität ist nicht Basis-10. Es ist keine Basis-irgendwas-Bekanntes: Tatsächlich haben Spezifitätswerte eine unendliche Basis. Wirklich. Sie „addieren also keine Punkte zusammen, zumindest nicht auf die Weise, die fast jeder, der diesen Artikel liest, annehmen würde.
Deshalb wird eine getrennte Notation (Kommas sind am gebräuchlichsten) bevorzugt, wenn Spezifitätswerte geschrieben werden. Sehen Sie http://meyerweb.com/eric/css/link-specificity.html als Beispiel, oder die CSS2.1-Spezifikation selbst.
Andy Clarkes Specificity Wars Beitrag von vor ein paar Jahren ist die Art und Weise, wie ich Spezifität verstehe.
Egal, wie viele Sturmtruppler Sie haben, sie werden nie gegen einen Darth Vader gewinnen!
Ich dachte, ich wäre ziemlich gut in Sachen Spezifität, aber ich wusste nie, dass die verschiedenen Arten von Selektoren tatsächliche numerische Werte zugewiesen bekommen, toller Artikel!!
Toller Artikel und die Illustrationen helfen einer visuell orientierten Person wie mir wirklich, das gesamte Konzept zu erfassen. Danke.
Danke Chris für den tollen Artikel. Ich mag auch Ihre visuelle Erklärung – BTW, welche Software verwenden Sie für Ihre visuellen Elemente in Ihren Artikeln?
Wow, Eric Meyer war ein wenig hart… im Gegensatz zu Snooks milderem und konstruktiverem Feedback.
Ich – für meinen Teil – habe mich in Ihre Basis-10-Annäherung verliebt, die sich so geschickt für intuitive grafische Beispiele eignet. Ich erkläre die Spezifität oft Kollegen, aber niemals waren meine Worte so klar wie heute Morgen, als ich mit einer ausgedruckten Kopie Ihres Artikels und diesen niedlichen Basis-10-Punkt-Blasen bewaffnet war. Ernsthaft gute Arbeit!
ABER… es scheint, als würde etwas Wichtiges fehlen. ;-)
Spezifisch zu sein hilft immer, den Code zu verstehen und die Kontrolle über die Elemente zu behalten.
Danke, das ist eine schöne Erinnerung!
Toller Artikel!
Ich schlage vor, Sie erstellen ein druckbares Spickzettel. Das wäre nützlich!
Toller Artikel über CSS-Spezifität! Eine Erklärung ist nicht einmal notwendig, die Bilder reichen aus. Aber Chris, angesichts von Eric Meyers Korrektur, warum korrigieren Sie Ihre Bilder nicht? Entfernen Sie die Pluszeichen und fügen Sie die Kommas hinzu.
Ich denke, :first-letter ist ein Pseudo-Element mit einem Punktwert und keine Pseudo-Klasse mit zehn Punkten. Kann jemand das bestätigen?
Das ist richtig, Alex. Aus obskuren technischen Gründen werden Pseudo-Elemente in CSS2 bei der Spezifitätsberechnung ignoriert (http://www.w3.org/TR/CSS2/cascade.html#specificity), erhalten aber in CSS2.1 einen Punkt (http://www.w3.org/TR/CSS21/cascade.html#specificity). Welche Regeln Ihr Browser implementiert hat, hängt natürlich davon ab.
Ich bin froh, dass Sie das aktualisiert haben. Ich sehe immer wieder CSS-Spezifitätsartikel (Smashing Mag, NetTuts, sogar Malarky), die das falsch machen, wenn es um die Berechnung der Spezifitätswerte geht.
Danke für die Aktualisierung, ich denke, es ist wichtig, Informationen so aktuell und korrekt wie möglich zu halten, da es immer noch Leute gibt, die nach Antworten suchen.
Gefahr kommt mit aufgeblähten Code. Vorsicht bei Klassen und IDs! Planen Sie Ihre Website, bevor Sie sie codieren!
Ich habe Andy Clarkes Star-Wars-Figurendiagramm dafür immer geliebt.
Ich stimme Scott Corgan zu.
Ich versuche, so wenige Klassen und IDs wie möglich zu verwenden. Wenn ich sie verwenden muss, nenne ich sie sehr generisch, damit sie universell einsetzbar sind.
Eine weitere Faustregel ist: Wenn mein CSS mehr als eine Klasse oder ID vor dem eigentlichen Element hat, mache ich wahrscheinlich etwas falsch.
Schöne Verwendung von Grafiken, um Ihren Punkt zu illustrieren.
Hallo Chris! Toller Beitrag. Ich habe mich gefragt, ob Sie eventuell all Ihre benutzerdefinierten CSS-Tricks-Klassen in einem einzigen Beitrag/einer Seite veröffentlichen könnten. Zum Beispiel erwähnten Sie in diesem Beitrag Ihren .last {} Class-Trick, den Sie bei Border/Float-Problemen gemacht haben. Ich denke, es wäre nützlich, diese Elemente in die CSS-Reset-Datei zu legen und sie immer wieder zu verwenden.
Gut angelegt. Danke!
Ich bin der Meinung, dass die !important-Regel in Author-Stylesheets vermieden werden sollte, da sie auch Deklarationen in einem User-Stylesheet überschreibt. Ein User-Stylesheet sollte als wichtiger erachtet werden (wenn ein Benutzer ein spezielles Stylesheet hat, gibt es einen Grund dafür). Die Verwendung von !important macht es auch für Sie selbst schwieriger, diese Deklaration weiter unten in einem Stylesheet zu überschreiben.
Wie immer gibt es mehr Lösungen für Ihr Problem, wie oben gezeigt. Wenn ein Stil für die gesamte Liste wichtig ist, ist es besser, die Stile auf die Liste anzuwenden und nicht auf die Listenelemente. Wenn Sie die Farbe auf ul#summer-drinks anwenden, gibt es kein Problem, eine andere Farbe auf .favorite anzuwenden. Sie können die meisten Spezifitätsprobleme vermeiden, indem Sie einfach Vererbung nutzen.
Ich weiß, dass dieser Beitrag alt ist, wollte aber nützliche Informationen hinzufügen, falls jemand diesen Kommentar in Zukunft liest.
http://www.w3.org/TR/CSS2/cascade.html
6.4.2 !important-Regeln
Hallo, ich möchte eine einfache Möglichkeit vorstellen, den von Ihnen oben gezeigten Trick mit „.last margin-right: 0 !important“ zu vermeiden.
Wenn Sie Portugiesisch sprechen könnten, okay, wenn nicht, verwenden Sie einen Online-Übersetzer (ich habe ihn für Sie mit Google Translator übersetzt, klicken Sie einfach hier http://bit.ly/baZpJ6) und schauen Sie sich meinen Artikel an http://edsonjunior.com/lista-de-itens-horizontal/
Übrigens, schöner Artikel. Habe ihn gerade zu meinen Delicious hinzugefügt! :)
Eine gute Erinnerung ist, zu vermeiden, spezifischer zu sein als nötig, manchmal hilft das der Leistung und erleichtert auch die Wartung/Wiederverwendung. Sie benötigen das „ul“ für „ul#summer-drinks“ nicht, da Sie nur eine ID pro Seite haben können. Weniger und effizientere Selektoren machen Ihre Seite schneller.
Eine weitere Sache ist, Elemente (z. B. „p, a, h1“) und generische Klassen (z. B. „last“) immer vor den anderen Regeln zu platzieren. So ist es einfacher zu verstehen, was überschrieben wird.
Gut gemacht, Kumpel! Wirklich schöne Zeichnungen *g*
Dies ist einer meiner Lieblingsartikel über CSS-Spezifität. Ich konnte nie wirklich verstehen, worum es dabei ging, selbst als ich zur Schule ging. Die Lehrer, die ich hatte, erklärten es nicht wirklich gut. Es ist erstaunlich, wie mächtig CSS wirklich ist. Ich weiß nicht einmal etwas über CSS5, also habe ich noch einen langen Weg vor mir.
Interessante Art, das zu berechnen. Oft habe ich am Ende „!important“ geschrieben, anstatt zu versuchen herauszufinden, was falsch war.
Nett von Ihnen, das zu aktualisieren. Im heutigen Web finde ich nur ältere, falsche Informationen. Sie gehören zu den wenigen guten Websites im Netz.
Spezifität ist einer der verwirrendsten Aspekte von CSS. Ihr Artikel ist der beste, den ich je gesehen habe, um ihn zu erklären, eine ausgezeichnete Arbeit.
Ich mache mir Sorgen, dass Leute diesen Artikel finden. Als ich vor einigen Jahren auf das Problem stieß, hatte ich keine Ahnung, dass es „Spezifität“ hieß. Ich versuchte nur herauszufinden, warum Stile, die an eine ID angehängt waren, Stile überschrieben, die durch eine Klasse auf einem darin enthaltenen Element definiert wurden!
Es wäre sehr interessant zu erfahren, wonach Leute gesucht haben, als sie versuchten, dies zu überwinden, und dann sicherzustellen, dass der Artikel auf solche Suchanfragen reagiert.
Ich mag den universellen Selektor * nicht, manchmal verliere ich die Kontrolle darüber und vielleicht verstehen andere Designer meinen CSS-Code nicht.
Danke für diesen Artikel!
Sie haben mich daran erinnert, dass der universelle Selektor keine Spezifität hat :)
Ich benutze auch ein anderes System, wenn ich eine Spezifität mit einem anderen Entwickler teilen möchte.
Ich fand Ihre Erklärung zu „!important“ zur Spezifität etwas verwirrend. Zum Beispiel
Die Farbe des Textes „Foo“ in „a“ wird grün sein, aber die meisten Leute denken vielleicht, sie sei rot.
!importantgilt für das Element, dem es zugewiesen ist, nicht für untergeordnete Elemente. Ich glaube,<a>wird in diesem Fall als untergeordnetes Element von<p>betrachtet. Jeglicher Text innerhalb des Elternelements wäre rot, unabhängig davon, welche Stile auf den universellenp-Selektor angewendet wurden;<a>würde jedoch seine zugewiesenen Stile behalten.Unter Verwendung des Bootstrap-Boilerplates von Initializr.com gibt es einen integrierten Stil, der anscheinend eine Spezifität von 0,0,1,0 hat.
Ich wollte ihm abgerundete Ecken mit einem Rand geben (kein Problem) und ihm etwas Platz zwischen den Spalten geben, damit die Ränder nicht berühren. Ich habe diesen Code erstellt, der meiner Meinung nach eine Spezifität von 0,0,2,0 hat.
Laut Firebug werden beide Selektoren berücksichtigt, aber die Nicht-.rounded verlieren gegen die reguläre. Also versuchte ich, die Umkehrung zu erstellen, die meiner Meinung nach auch eine Spezifität von 0,0,2,0 hat.
Sicher genug, sie schlägt die einfache aus, anscheinend weil sie mehr Spezifität hat.
Ich habe auch versucht, die Reihenfolge der Selektoren, Inline vs. Eingeschlossen und die Reihenfolge der Auflistung der Klassen (.rounded.col-lg-4) zu ändern, und nichts änderte sich. Ich habe meine Tests in Chrome durchgeführt.
Es macht mich also stutzig, warum zwei Klassen auf demselben Element zusammen mit einem Selektor, der beide anspricht, keine höhere Spezifität als ein Selektor haben, der nur eine anspricht? Oder ist meine Mathematik falsch?
Ich habe das Problem gefunden. Es gibt einen @media-Selektor darüber, der den Stil abdeckt, den ich überschreiben wollte. Daher hat @media meiner Meinung nach einen sehr hohen Wert, obwohl ich nicht genau weiß, wo er in diese Hierarchie fallen würde. Vielleicht könnten diese Informationen dem Artikel hinzugefügt werden?