Comment puis-je sélectionner le “dernier enfant” avec un nom de classe dans le CSS?
<ul>
<li class="list">test1</li>
<li class="list">test2</li>
<li class="list">test3</li>
<li>test4</li>
</ul>
Comment puis-je sélectionner le "dernier enfant" avec le nom de la classe: liste?
<style>
ul li.list:last-child{background-color:#000;}
</style>
Je sais que l'exemple ci-dessus ne fonctionne pas, mais est-il quelque chose de semblable à ce qui ne fonctionne pas?
IMPORTANT:
a) je ne peux pas utiliser ul li:nth-child(3)
, car il pourrait arriver que c'est sur la quatrième ou cinquième place.
b) Pas de JavaScript.
Toute aide serait appréciée, merci!
- lui donner un nom de classe qui sera le plus simple navigateur croix de chemin
- Veuillez passer en revue les réponses et mettre à jour les données vérifiées réponse.
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de profiter du fait que vous pouvez attribuer plusieurs classes à un élément comme suit:
Le dernier élément a de la
list
classe comme ses frères et sœurs, mais aussi a lalast
de classe que vous pouvez utiliser afin de définir la propriété CSS que vous voulez, comme suit::last-child
sélecteur ne fonctionne pas sur les noms de classe si le dernier élément n'a pas le nom de la classe. Voir jsfiddle.net/qgqf7gpq/2Cela peut être fait à l'aide d'un sélecteur d'attribut.
La
class~
sélectionne un ensemble spécifique de mots. Cela permet à votre élément de la liste à plusieurs classes si besoin, dans diverses d'ordre. Ça va encore trouver l'exacte catégorie "liste" et appliquer le style à la dernière.Voir un exemple ici: http://codepen.io/chasebank/pen/ZYyeab
Lire la suite sur le sélecteur d'attribut:
http://css-tricks.com/attribute-selectors/
http://www.w3schools.com/css/css_attribute_selectors.asp
list
. Je vais laisser la réponse bien que, dans le cas où il étincelles certaines autres solutions comme l'attribut et de la pseudo-sélecteurs sont tout à fait intéressant et puissant.[class~='list']
au lieu de simplement.list
?:last-of-type
pseudo-sélecteur (ie:.list:last-of-type
), vous vous retrouverez avec des problèmes de navigateur. Pseudo-sélecteurs cible éléments, attributs et parfois ne fonctionnent pas sur les classes, comme le vsync mentionne dans la réponse précédente. Mais si vous utilisez un sélecteur d'attribut de la cible de la classe au lieu de simplement la classe,:last-of-type
travaille beaucoup plus fiable..Select-value:nth-last-child(2)
(ou même.Select-value:not(:nth-last-child(2))
pour désactiver les styles pour cet élément). Dans mon cas, je ne peux pas modifier le html parce que c'est l'héritage(de la bibliothèque). Mais je sais que mon élément 2 de la fin.Vous pouvez utiliser le adjacents sélecteur de frères de réaliser quelque chose de similaire, qui pourrait vous aider.
Permettra de cibler efficacement les immédiatement à l'élément suivant après le dernier élément avec la classe
other-class
.Lire la suite ici: https://css-tricks.com/almanac/selectors/a/adjacent-sibling/
list
que l'OP mentionné. Cela dit, il peut être utilisé pour obtenir des résultats similaires en fonction des besoins.C'est un coup de répondre, mais si vous êtes contraint de CSS et capable de se retourner vos articles dans les DOM, il pourrait être utile d'examiner. Il s'appuie sur le fait que bien qu'il n'y a pas de sélecteur pour le dernier élément d'une classe spécifique, il est possible de le style de la première. L'astuce consiste alors à utiliser flexbox pour afficher les éléments dans l'ordre inverse.
CSS:
HTML:
Je suppose que le plus de la réponse correcte est: Utiliser
:nth-child
(ou, dans ce cas précis, son homologue:nth-last-child
). La plupart ne savent ce sélecteur en son premier argument pour saisir une gamme d'articles basés sur un calcul avec n, mais il peut également prendre une deuxième argument "de [toute sélecteur CSS]".Votre scénario pourrait être résolu avec ce sélecteur:
li:nth-last-child(1 of .list)
Mais techniquement correct ne signifie pas que vous pouvez utiliser, cependant, parce que ce sélecteur est seulement mis en œuvre dans Safari.
Pour davantage de lecture:
Vous ne pouvez pas cibler la dernière instance de la classe nom dans votre liste sans JS.
Cependant, vous ne pouvez pas être hors-de-css-la chance, en fonction de ce que vous êtes désireux de le réaliser. Par exemple, en utilisant la prochaine sélecteur de frères, j'ai ajouté un visuel diviseur après le dernier de vos
.list
éléments ici: http://jsbin.com/vejixisudo/edit?html,css,sortieIl y a une solution (dans certaines situations) pour ce problème:
Permet de dire que nous sommes allés à masquer tous les éléments de la liste qui est inférieur à l'indice de
3
CSS
Démonstration En Direct
Ce va se débarrasser de la nécessité d'ajouter un
hide
classe à tous les éléments qui doit être caché, de sorte que nous nous retrouvons avec une seule classe,hide
, dont les règles de tous les. maintenant, vous n'avez pas besoin d'utiliser lelast-of-type
qui ne peuvent pas travailler avec des noms de Classe. vous devez repenser votre approche de la classification des chosesUtilisez ce sélecteur:
ul > li:last-of-type
. Cela permet de sélectionner chaque élément de la liste (<li>
) dans une liste non ordonnée (<ul>
).Répartition de la réponse: je suis en sélectionnant uniquement les enfants (
>
) d'une liste non ordonnée (<ul>
) qui est le dernier enfant de son type (<li>
) de l'élément parent (<ul>
).Vous pouvez utiliser un Id ou une classe pour limiter le sélecteur de certaines listes non ordonnées. Par exemple:
ul.my-class > li:last-of-type
permettra de choisir la dernière<li>
seulement à partir de la listes non ordonnées de cette classeou
css
solution