Ist es möglich, anders als das, was ich tue, weil es nicht zu funktionieren scheint, dies zu tun? Ich möchte in der Lage sein, Unterklassen zu haben, die sich unter einer Klasse befinden, um das CSS speziell für diese class.subclass zu verwenden.
CSS
.area1
{
border:1px solid black;
}
.area1.item
{
color:red;
}
.area2
{
border:1px solid blue;
}
.area2.item
{
color:blue;
}
HTML
<div class="area1">
<table>
<tr>
<td class="item">Text Text Text</td>
<td class="item">Text Text Text</td>
</tr>
</table>
</div>
<div class="area2">
<table>
<tr>
<td class="item">Text Text Text</td>
<td class="item">Text Text Text</td>
</tr>
</table>
</div>
Damit ich nur class = "item" für die Elemente unter der übergeordneten CSS-Klasse "area1", "area2" verwenden kann. Ich weiß, dass ich class = "area1 item" verwenden kann, um dies zum Laufen zu bringen, aber ich verstehe nicht, warum es so ausführlich sein muss. Sollte die CSS-Unterklasse nicht prüfen, unter welcher übergeordneten Klasse sie sich befindet, um sie zu definieren?
Hinweis: Dies funktioniert im IE (derzeit mit 7), in FF jedoch nicht. Daher gehe ich davon aus, dass dies keine CSS-Standardmethode ist.
Zu Ihrer Information, wenn Sie eine Regel wie oben definieren, wobei zwei Selektoren miteinander verkettet sind:
Es bedeutet:
Sowie:
Leider funktioniert es in IE6 nicht, aber genau das bedeutet es.
quelle
Ihr Problem scheint ein fehlender Abstand zwischen Ihren beiden Klassen im CSS zu sein:
Sollte sein
quelle
Möchten Sie nur die Auswahl von Kindern erzwingen? http://css.maxdesign.com.au/selectutorial/selectors_child.htm
quelle
Setzen Sie einfach ein Leerzeichen zwischen .area1 und .item, z. B.:
Dieser Stil gilt für Elemente mit Klassenelementen innerhalb eines Elements mit Klassenbereich1.
quelle
Setzen Sie einfach ein Leerzeichen zwischen Ihre Klassen
Hier ist eine sehr gute Referenz für CSS-Selektoren .
quelle
Im Anschluss an die Antwort von kR105 oben:
Mein Problem war dem des OP (Original Poster) ähnlich und trat nur außerhalb einer Tabelle auf, sodass die Unterklassen nicht aus dem Bereich der übergeordneten Klasse (der Tabelle) heraus aufgerufen wurden, sondern außerhalb der Tabelle, sodass ich Selektoren HINZUFÜGEN musste , wie kR105 erwähnt.
Hier war das Problem: Ich hatte zwei Kästchen (divs) mit jeweils demselben Randradius (HTML5), Polsterung und Rand, musste sie jedoch in verschiedenen Farben gestalten. Anstatt diese 3 Parameter für jede Farbklasse zu wiederholen, wollte ich, dass eine "Oberklasse" Randradius / Auffüllung / Rand enthält, dann nur einzelne "Unterklassen", um ihre Unterschiede auszudrücken (doppelte Anführungszeichen um jede, da sie nicht wirklich Unterklassen sind - siehe meinen späteren Beitrag). So hat es geklappt:
HTML:
CSS:
Hoffe jemand findet das hilfreich.
quelle
Das ist das Rückgrat von CSS, der "Kaskade" in Cascading Style Sheets.
Wenn Sie Ihre CSS-Regeln in einer einzigen Zeile schreiben, können Sie die Struktur leichter erkennen:
Die Verwendung mehrerer Klassen ist auch eine gute fortgeschrittene / fortgeschrittene Verwendung von CSS. Leider gibt es einen bekannten IE6-Fehler, der diese Verwendung beim Schreiben von browserübergreifendem Code einschränkt:
IE6 IGNORIERT die ersten Wähler in einer Multi-Class - Regel, so IE6 gilt tatsächlich die .area1.larger Regel als
Dies bedeutet, dass ALLE größeren Elemente betroffen sind.
Es ist ein sehr böser und unglücklicher Fehler (einer von vielen) in IE6, der Sie dazu zwingt, diese Funktion von CSS so gut wie nie zu verwenden, wenn Sie eine saubere browserübergreifende CSS-Datei wünschen.
Die Lösung besteht dann darin, CSS-Klassennamenpräfixe zu verwenden, um eine Kollision mit generischen Klassennamen zu vermeiden:
Kann auch nur eine Klasse verwenden, aber auf diese Weise können Sie das CSS in der von Ihnen beabsichtigten Logik beibehalten, während Sie wissen, dass .area1Larger nur .area1 usw. betrifft.
quelle
Die Klasse, die Sie auf das Div anwenden, kann beispielsweise als Referenzpunkt für Stilelemente mit diesem Div verwendet werden.
Um super semantisch zu sein, sollten Sie die Klasse auf den Tisch verschieben.
quelle
Sie können auch zwei Klassen in einem solchen Element haben
<div class = "item1 item2 item3"></div>
Jedes Element in der Klasse ist eine eigene Klasse
quelle
kR105 schrieb:
Der Rand und der Text der Box wären blau, da der Stil von .box2 diese Werte zuweist.
Auch in meinem früheren Beitrag hätte ich betonen sollen, dass das Hinzufügen von Selektoren nicht das gleiche ist wie das Erstellen einer Unterklasse innerhalb einer Klasse (die erste Lösung in diesem Thread), obwohl der Effekt ähnlich ist.
quelle