Ich möchte Stile nur auf die Tabelle innerhalb des DIV mit einer bestimmten Klasse anwenden:
Hinweis: Ich würde lieber einen CSS-Selektor für untergeordnete Elemente verwenden.
Warum funktioniert die Nummer 1 und die Nummer 2 nicht?
1:
div.test th, div.test td, div.test caption {padding:40px 100px 40px 50px;}
2:
div.test th, td, caption {padding:40px 100px 40px 50px;}
HTML:
<html>
<head>
<style>
div.test > th, td, caption {padding:40px 100px 40px 50px;}
</style>
</head>
<body>
<div>
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
<div class="test">
<table border="2">
<tr><td>some</td></tr>
<tr><td>data</td></tr>
<tr><td>here</td></tr>
</table>
</div>
</body>
</html>
Was mache ich falsch?
css
css-selectors
römisch m
quelle
quelle
Antworten:
Dieser Code "
div.test th, td, caption {padding:40px 100px 40px 50px;}
" wendet eine Regel auf alleth
Elemente an, die in einemdiv
Element mit einer benannten Klasse enthalten sindtest
, zusätzlich zu allentd
Elementen und allencaption
Elementen.Es ist nicht die gleiche wie „alle
td
,th
undcaption
Elemente , die sich durch ein enthaltenediv
Element mit einer Klasse vontest
“. Um dies zu erreichen, müssen Sie Ihre Selektoren ändern:'
>
' wird von einigen älteren Browsern nicht vollständig unterstützt (ich sehe Sie an, Internet Explorer).quelle
quelle
.test *
dies die spezifischste Regel für jedes untergeordnete Element wäre. Mit anderen Worten, denken Sie daran, dass alles, was Sie eingeben,.test *
nicht durch eine spezifischere CSS-Regel überschrieben werden kann, da diestest *
die spezifischste Regel ist.Der
>
Selektor stimmt nur mit direkten Kindern überein, nicht mit Nachkommen.Sie wollen
oder wahrscheinlicher
Bearbeiten:
Der erste sagt
Während der zweite sagt
In Original das
div.test > th
sagtany <th> which is a **direct** child of <div class="test">
, was bedeutet , passt auf sie<div class="test"><th>this</th></div>
aber nicht überein<div class="test"><table><th>this</th></table></div>
quelle
Wenn Sie allen untergeordneten Elementen einen Stil hinzufügen möchten und keine Spezifikation für das HTML-Tag angeben möchten, verwenden Sie ihn.
Übergeordnetes Tag
div.parent
Kind - Tag in der div.parent wie
<a>
,<input>
,<label>
usw.Code:
div.parent * {color: #045123!important;}
Sie können auch wichtige entfernen, es ist nicht erforderlich
quelle
Hier ist ein Code, den ich kürzlich geschrieben habe. Ich denke, dass es eine grundlegende Erklärung für die Kombination von Klassen- / ID-Namen mit Pseudoklassen bietet.
quelle
//
. Siehe stackoverflow.com/questions/4656546/…funktioniert bei mir.
Die untergeordnete Auswahl> funktioniert in IE6 nicht.
quelle
Soweit ich das weiß:
oder in deinem Fall sogar das:
(Dies funktioniert jedoch für Elemente
yourclass
, die möglicherweise nichtdiv
s sind.) wirkt sich nur auf Tabellen im Inneren ausyourclass
. Und wie Ken sagt, wird das> nicht überall unterstützt (unddiv[class=yourclass]
auch die Punktnotation für Klassen).quelle
Dieser Code kann den Trick auch mithilfe der SCSS-Syntax ausführen
quelle