J'ai un élément avec class='myTestClass'
. Comment appliquer un style CSS à tous les enfants de ces éléments? Je veux seulement appliquer le style aux éléments elements. Pas ses petits enfants.
Je pourrais utiliser
.myTestClass > div {
margin: 0 20px;
}
qui fonctionnent pour tous les enfants div
, mais je voudrais une solution qui fonctionne pour tous les enfants. Je pensais pouvoir utiliser *
, mais
.myTestClass > * {
margin: 0 20px;
}
ne marche pas.
Modifier
Le sélecteur .myTestClass > *
n'applique pas la règle dans firefox 26 et il n'y a pas d'autre règle pour la marge selon firebug. Et cela fonctionne si je remplace *
par div
.
Comme l'a commenté David Thomas , les descendants de ces éléments enfants hériteront (probablement) de la plupart des styles attribués à ces éléments enfants.
Vous devez envelopper votre .myTestClass
dans un élément et appliquer les styles aux descendants en ajoutant .wrapper *
sélecteur de descendant . Ajoutez ensuite .myTestClass > *
sélecteur d'enfants pour appliquer le style aux éléments enfants, pas à ses petits-enfants. Par exemple, comme ceci:
JSFiddle - DÉMO
.wrapper * {
color: blue;
margin: 0 100px; /* Only for demo */
}
.myTestClass > * {
color:red;
margin: 0 20px;
}
<div class="wrapper">
<div class="myTestClass">Text 0
<div>Text 1</div>
<span>Text 1</span>
<div>Text 1
<p>Text 2</p>
<div>Text 2</div>
</div>
<p>Text 1</p>
</div>
<div>Text 0</div>
</div>
Au lieu du sélecteur *
, vous pouvez utiliser la :not(selector)
avec le sélecteur >
et définir quelque chose qui ne sera certainement pas un enfant.
Exemple:
.container > :not(Marquee){
color:red;
}
<div class="container">
<p></p>
<span></span>
<div>