Je veux appliquer des styles uniquement à la table à l'intérieur du DIV avec une classe particulière:
Remarque: je préfère utiliser un sélecteur css pour les éléments enfants.
Pourquoi le # 1 fonctionne et le # 2 ne fonctionne pas?
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>
Qu'est-ce que je fais mal?
css
css-selectors
romain m
la source
la source
Réponses:
Ce code "
div.test th, td, caption {padding:40px 100px 40px 50px;}
" applique une règle à tous lesth
éléments contenus dans undiv
élément avec une classe nomméetest
, en plus de tous lestd
éléments et de tous lescaption
éléments.Ce n'est pas la même chose que "tous
td
,th
et lescaption
éléments qui sont contenus par undiv
élément avec une classe detest
". Pour ce faire, vous devez modifier vos sélecteurs:'
>
' n'est pas entièrement pris en charge par certains navigateurs plus anciens (je vous regarde, Internet Explorer).la source
la source
.test *
serait la règle la plus spécifique pour chaque élément enfant. En d'autres termes, gardez à l'esprit que tout ce que vous mettez à l'intérieur.test *
ne peut pas être remplacé par une règle css plus spécifique cartest *
c'est la règle la plus spécifique.Le
>
sélecteur correspond uniquement aux enfants directs, pas aux descendants.Tu veux
ou plus probable
Éditer:
Le premier dit
Alors que le second dit
Dans votre original, le
div.test > th
ditany <th> which is a **direct** child of <div class="test">
, ce qui signifie qu'il correspondra<div class="test"><th>this</th></div>
mais ne correspondra pas<div class="test"><table><th>this</th></table></div>
la source
Si vous souhaitez ajouter du style à tous les enfants et aucune spécification pour la balise html, utilisez-la.
Balise parent
div.parent
balise enfant à l' intérieur du div.parent comme
<a>
,<input>
,<label>
etc.code:
div.parent * {color: #045123!important;}
Vous pouvez également supprimer important, ce n'est pas obligatoire
la source
Voici du code que j'ai récemment écrit. Je pense qu'il fournit une explication de base de la combinaison des noms de classe / ID avec des pseudoclasses.
la source
//
. Voir stackoverflow.com/questions/4656546/…travaille pour moi.
Le sélecteur enfant> ne fonctionne pas dans IE6.
la source
Pour autant que je sache ceci:
ou dans votre cas, même ceci:
(mais cela fonctionnera pour les éléments
yourclass
qui pourraient ne pas êtrediv
s) n'affectera que les tables à l'intérieuryourclass
. Et, comme le dit Ken, le> n'est pas pris en charge partout (etdiv[class=yourclass]
aussi, utilisez donc la notation ponctuelle pour les classes).la source
Ce code peut aussi faire l'affaire, en utilisant la syntaxe SCSS
la source