/ / Sélectionnez récursif: last-child. Possible? - css, css3, sélecteurs css

Sélectionnez récursif: last-child. Possible? - css, css3, sélecteurs css

En CSS, est-il possible de sélectionner récursivement tout: last-child from body?

Étant donné ce balisage:

<body>
<div id="_1">
<div id="_2"></div>
</div>
<div id="_3">
<div id="_4">
<div id="_5"></div>
<div id="_6"></div>
</div>
</div>
</body>

Je cherche div no. 3, 4 et 6

Une autre façon de le dire est la suivante:

body > :last-child,
body > :last-child > :last-child,
body > :last-child > :last-child > :last-child,
body > :last-child > :last-child > :last-child > :last-child {
/* My stuff here */
}

Mais évidemment, ce n'est pas une bonne approche.

Réponses:

6 pour la réponse № 1

Non, malheureusement, c \ 'est à peu près la seule façon de le faire sans modifier le code HTML.

Il y a eu au moins une demande pour les versions récursives du :first-child et :last-child pseudo-classes, mais cela ne semble pas avoir gagné beaucoup de faveur. Remarquez qu'il suggère d'imbriquer et de répéter les pseudo-classes de la même manière que dans votre question:

Actuellement, autant que je sache, nous ne pouvons jumeler les enfants que jusqu'à un certain exact Niveau de nidification connu à l'avance (3 dans l'exemple ci-dessous):

.container > :first-child,
.container > :first-child > :first-child,
.container > :first-child > :first-child > :first-child {}

Nous ne pouvons pas utiliser uniquement: le sélecteur de contexte du premier enfant, car cela sélectionnerait également les premiers enfants des blocs qui ne sont pas les premiers enfants eux-mêmes.

Nous avons donc besoin d'une sorte de récursif sélecteur qui correspond non seulement au premier et au dernier enfant, mais également à tous les éléments les plus récents et les plus récents, quel que soit leur niveau d'imbrication.


1 pour la réponse № 2

Pas besoin de chaîner tout le chemin. Ce serait simplement comme ça

div:last-child {
/* Your GREAT css */
}

Démo

Mettre à jour: Dans ce cas, donnez le div2 une classe typique et utilisation :not() pour sortir de la sélection

div:last-child:not(.nolist) {
border: 1px solid red;
}

Démo