Par exemple :
div > p.some_class {
/* Some declarations */
}
Que fait exactement le >
Signification du signe ?
Par exemple :
div > p.some_class {
/* Some declarations */
}
Que fait exactement le >
Signification du signe ?
>
est le combinateur d'enfants parfois appelé par erreur le combinateur des descendants directs. 1
Cela signifie que le sélecteur div > p.some_class
ne correspond qu'aux paragraphes de .some_class
qui sont imbriqués directement à l'intérieur a div
et non les paragraphes qui sont imbriqués plus loin. Cela implique que chaque élément correspondant à div > p.some_class
correspond nécessairement aussi div p.some_class
avec le combinateur descendant (espace), ce qui explique que les deux soient souvent confondus.
Une illustration comparant le combinateur enfant avec le combinateur descendant :
div > p.some_class {
background: yellow;
}
div p.some_class {
color: red;
}
<div>
<p class="some_class">Some text here</p> <!-- [1] div > p.some_class, div p.some_class -->
<blockquote>
<p class="some_class">More text here</p> <!-- [2] div p.some_class -->
</blockquote>
</div>
Quels éléments sont mis en correspondance par quels sélecteurs ?
Correspondant aux deux div > p.some_class
et div p.some_class
Ce site p.some_class
est situé directement à l'intérieur de la div
et une relation parent-enfant est donc établie entre les deux éléments. Puisque "child" est un type de "descendant", tout élément enfant est par définition également un descendant. Par conséquent, les deux règles sont appliquées.
Correspondant uniquement à div p.some_class
Ce site p.some_class
est contenu par un blockquote
au sein de la div
plutôt que le div
même. Bien que cette p.some_class
est un descendant de la div
il ne s'agit pas d'un enfant, mais d'un petit-enfant. Par conséquent, seule la règle comportant le combinateur descendant dans son sélecteur est appliquée.
1 Beaucoup de gens vont plus loin en l'appelant "enfant direct" ou "enfant immédiat", mais c'est complètement inutile (et incroyablement ennuyeux pour moi), car un élément enfant <strong>est immédiate <em>par définition </em></strong>de toute façon, donc ils signifient exactement la même chose. Il n'existe pas d'"enfant indirect".
+1 Est-ce que ça s'appelle vraiment un sélecteur d'enfant ? Si oui, c'est assez trompeur. J'aurais pensé #something a
serait un sélecteur d'enfant.
@alex : oui :) #something a
pourrait signifier a
est un petit-enfant ou un arrière-petit-enfant de #something
(il ne tient pas compte de la profondeur d'imbrication).
Merci beaucoup pour le lien ! J'y ai également découvert les "sélecteurs de frères et sœurs adjacents".
Vous y trouverez Support du navigateur sur Sitepoint. Ne fonctionne pas dans IE6 si c'est important pour vos projets, OK partout ailleurs. Cette ressource est particulièrement utile pour les fratries, :nth-child() etc. où le support est encore incomplet.
Html
<div>
<p class="some_class">lohrem text (it will be of red color )</p>
<div>
<p class="some_class">lohrem text (it will NOT be of red color)</p>
</div>
<p class="some_class">lohrem text (it will be of red color )</p>
</div>
css
div > p.some_class{
color:red;
}
Tous les enfants directs qui sont <p>
avec .some_class
se verraient appliquer le style.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.