Changement de CSS pour le dernier <li>
Je me demande si il y a un moyen de changer un attribut CSS pour la dernière li
dans une liste à l'aide de CSS. J'ai regardé dans l'aide de :last-child
, mais cela semble vraiment buggé et je ne peux pas le faire fonctionner pour moi. Je vais utiliser JavaScript pour faire cela, si nécessaire, mais je veux savoir si quelqu'un peut trouver une solution en CSS.
- Je suis curieux: pourquoi avez-vous besoin de cela?
- Salut strager: je fais une barre de navigation et souhaitez les propriétés du dernier élément à être différent, puis le reste d'entre eux.
Vous devez vous connecter pour publier un commentaire.
:last-child
est vraiment la seule façon de le faire sans modifier le HTML, mais en supposant que vous pouvez faire, l'option principale est juste pour lui donner unclass="last-item"
, alors:Évidemment, vous pouvez automatiser cette dans la dynamique de génération de la page à la langue de votre choix. Aussi, il y a un
lastChild
JavaScript propriété dans le DOM du W3C.Voici un exemple de ce que vous voulez dans Prototype:
Ou plus simplement encore:
Dans jQuery, vous pouvez l'écrire, même de manière plus compacte:
Notez également que cette devrait de travail sans utiliser le
last-child
sélecteur CSS - plutôt, un JavaScript de mise en œuvre de il est utilisé - de sorte qu'il devrait être moins buggé et plus fiable dans les navigateurs.:last-child
bien.Je l'ai fait avec de la pure CSS (probablement parce que je viens du futur - 3 ans plus tard que tout le monde 😛 )
En supposant que nous disposons d'une liste:
Alors on peut facilement faire le texte du dernier élément rouge avec:
J'ai l'habitude de combiner CSS et JavaScript approches, de sorte qu'il fonctionne sans JavaScript dans tous les navigateurs, mais IE6/7, et dans IE6/7 avec JavaScript (mais pas sur), car ils ne supportent pas le
:last-child
pseudo-classe.Vous pouvez utiliser jQuery et de le faire en tant que telle façon
Une alternative pour IE7+ et les autres navigateurs peut-être d'utiliser
:first-child
au lieu de cela, et inverser les styles.Par exemple, si vous êtes à la définition de la marge sur chaque
li
:Vous pouvez le remplacer par ceci:
Cela fonctionne bien pour certains autres cas, comme les frontières.
Selon sitepoint,
:first-child
buggy, mais seulement dans la mesure où il permettra de sélectionner certains éléments racine (le doctype ou html), et ne peut pas changer de style si d'autres éléments sont insérés.2015 Répondre: CSS last-of-type vous permet de vous style le dernier élément.
J'ai l'habitude de le faire en créant un fichier htc (ex. dernier enfant.htc):
Et de l'appeler à partir de mon IE conditionnel fichier css avec:
ul { behavior: url("/javascripts/htc/last-child.htc"); }
Alors que dans mon fichier css principal j'ai eu:
Une autre solution (mais plus lent), qui utilise votre existant css balisage sans définir une .dernier enfant de la classe serait de Dean Edwards ie7.js bibliothèque.
:dernier enfant est CSS3 et n'a pas d'IE de soutien, tout :d'abord l'enfant est CSS2, je crois que ce qui suit est une façon sûre de le mettre en œuvre à l'aide de jquery
$('li').last().addClass('someClass');
si vous avez plusieurs
il ne sélectionnez la dernière li.
Si vous le savez, il y a trois li dans la liste, vous êtes en train de regarder, par exemple, vous pourriez faire ceci:
Dans IE6, vous pouvez utiliser des expressions:
Je vous conseille d'utiliser une classe spécialisée ou Javascript (pas IE6 expressions), bien que, jusqu'à ce que le
:last-child
sélecteur obtient un meilleur soutien.