11
votes

Sélectionnez Récursive: dernier enfant. Possible?

dans CSS, est-il possible de sélectionner de manière récursive tout: dernier enfant du corps?

Compte tenu de ce balisage: P>

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 */
}


1 commentaires

Si l'un des éléments suivants a été résolu, nous pourrions également résoudre celui-ci: Stackoverflow.com/Questtions/10227375/... | Stackoverflow.com/questions/1014861/... < / a> en vérifiant qu'il n'y a pas de dernier parent.


3 Réponses :


0
votes

pas besoin de chaîner tout le chemin. Ce serait simplement comme celui-ci xxx

démo

mise à jour: sur ce cas, donnez le div2 une classe typique et utilisez : pas () pour sortir de la sélection xxx

démo


4 commentaires

Cela sélectionnerait également Div Non. 2.


@Lassedahlebert, mal comprise la question. C'est en fait très simple. Voir la mise à jour et la démo :)


Merci pour la réponse, mais ce n'est pas ce que je cherche. Voir cette démo Forked: jsfiddle.net/hhkc7 - Je ne veux pas div 2


Bonjour Starx - Merci pour vos efforts, mais je cherche une manière très générale de choisir "Le chemin de: dernier enfant". Si j'avais un cas particulier, je serais immobile de perdre des ennuis comme vous le suggérez.



6
votes

Non, malheureusement, c'est à peu près le seul moyen de le faire sans modifier le HTML.

Il y a eu au moins une demande pour des versions récursives du : premier enfant code> et : dernier enfant code> pseudo-classes , mais cela ne semble pas avoir gagné beaucoup de faveur. Remarque Il suggère de nidifier et de répéter les pseudo-classes de la même manière que dans votre question: P>

Actuellement, Afaik, nous ne pouvons que correspondre aux enfants jusqu'à certains niveau de nidification exactement em> connu à l'avance (3 dans l'exemple ci-dessous): P>

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


1 commentaires

Ok, j'avais peur de ça. Merci.



1
votes
body :last-child {
    color:red;
}
body :not(:last-child) :last-child {
    color:initial;
}
Any last-child element that's a descendant of one that's not a last-child will have the change reversed.

3 commentaires

Tout dernier élément enfant qui est un descendant de celui qui n'est pas un dernier enfant aura le changement inversé.


Ajoutez ceci dans la réponse


C'est tentant. Mais vous devez bien vouloir avoir couleur: initiale; sur les éléments non sélectionnés, ou vous devez le combattre avec des sélecteurs plus spécifiques.