J'ai le html suivant
<div class="section">
<div>header</div>
<div>
contents
<div>sub contents 1</div>
<div>sub contents 2</div>
</div>
</div>
Et le style suivant:
DIV.section DIV:first-child
{
...
}
Pour une raison que je ne comprends pas, le style est appliqué au "sous-contenu 1" <div>
ainsi qu'à "l'en-tête" <div>
.
Je pensais que le sélecteur sur le style ne s'appliquerait qu'au premier enfant direct d'un div avec une classe appelée "section". Comment puis-je changer le sélecteur pour obtenir ce que je veux?
html
css
css-selectors
Jeremy
la source
la source
Réponses:
Ce que vous avez publié signifie littéralement "Trouvez tous les divs qui sont à l'intérieur des divs de section et qui sont le premier enfant de leurs parents." Le sous contient une balise qui correspond à cette description.
Il m'est difficile de savoir si vous voulez ou non les deux enfants de la div principale. Si oui, utilisez ceci:
Si vous ne voulez que l'en-tête, utilisez ceci:
En utilisant les
>
modifications, la description devient: "Trouvez tous les divs qui sont les descendants directs des divs de section", c'est ce que vous voulez.Veuillez noter que tous les principaux navigateurs prennent en charge cette méthode, à l'exception d'IE6. Si la prise en charge d'IE6 est essentielle à la mission, vous devrez ajouter des classes aux divisions enfant et l'utiliser à la place. Sinon, ça ne vaut pas la peine de s'en soucier.
la source
div.section > div:first-child > div { /* Cancel Changes*/}
Trouvé cette question en recherchant sur Google. Cela retournera le premier enfant d'un élément avec la classe
container
, quel que soit le type de l'enfant.la source
CSS est appelé feuilles de style en cascade car les règles sont héritées. En utilisant le sélecteur suivant, va sélectionner uniquement l'enfant direct du parent, mais ses règles seront héritées par ce
div
enfants dedivs
:Maintenant, cela
div
et ses enfants le serontred
. Vous devez annuler tout ce que vous définissez sur le parent si vous ne voulez pas qu'il hérite:Maintenant, seul le single
div
qui est un enfant direct dediv.section
sera rouge, mais ses enfantsdivs
seront toujours noirs.la source
la source
Utilisez
div.section > div
.Mieux encore, utilisez une
<h1>
balise pour l'en-tête etdiv.section h1
dans votre CSS, afin de prendre en charge les navigateurs plus anciens (qui ne connaissent pas le>
) et de conserver votre sémantique de balisage.la source
Le sélecteur CSS pour le premier enfant direct dans votre cas est:
Le sélecteur direct est> et le premier sélecteur d'enfant est: premier enfant
Pas besoin d'un astérisque avant le: comme d'autres le suggèrent. Vous pouvez accélérer la recherche DOM en modifiant cette solution en ajoutant la balise:
la source