Ich bin etwas verwirrt über CSS und das class
Attribut. Ich habe immer gedacht, dass die Reihenfolge, in der ich mehrere Klassen im Attributwert spezifiziere, eine Bedeutung hat. Die spätere Klasse könnte / sollte Definitionen der vorherigen überschreiben, aber dies scheint nicht zu funktionieren. Hier ist ein Beispiel:
<html>
<head>
<style type="text/css">
.extra {
color: #00529B;
border:1px solid #00529B; /* Blue */
background-color: #BDE5F8;
}
.basic {
border: 1px solid #ABABAB;
}
</style>
</head>
<body>
<input type="text" value="basic" class="basic"/>
<input type="text" value="extra" class="extra"/>
<input type="text" value="basic extra" class="basic extra"/>
<input type="text" value="extra basic" class="extra basic"/>
</body>
</html>
Ich würde erwarten, dass das dritte Beispiel mit class="basic extra"
einen blauen Rand haben sollte, da der in extra spezifizierte Rand den Rand von Basic überschreiben würde.
Ich benutze FF 3 auf Ubuntu 9.04
Die Reihenfolge der Klassen im Attribut ist irrelevant. Alle Klassen im
class
Attribut werden gleichermaßen auf das Element angewendet.Die Frage ist: In welcher Reihenfolge erscheinen die Stilregeln in Ihrer CSS-Datei? In Ihrem Beispiel
.basic
folgt,.extra
damit die.basic
Regeln nach Möglichkeit Vorrang haben.Wenn Sie eine dritte Möglichkeit bereitstellen möchten (z. B.
.basic
dass die.extra
Regeln weiterhin gelten sollten), müssen Sie.basic-extra
möglicherweise eine andere Klasse erfinden , die dies ausdrücklich vorsieht.quelle
Dies kann getan werden, aber Sie müssen mit Ihren Selektoren ein wenig kreativ werden. Mithilfe von Attributselektoren können Sie Dinge wie "beginnt mit", "endet mit", "enthält" usw. angeben. Siehe Beispiel unten mit demselben Markup, jedoch mit Attributselektoren.
quelle