Meu objetivo é aplicar o CSS no último li
, mas não faz isso.
#refundReasonMenu #nav li:last-child {
border-bottom: 1px solid #b5b5b5;
}
<div id="refundReasonMenu">
<ul id="nav">
<li><a id="abc" href="#">abcde</a></li>
<li><a id="def" href="#">xyz</a></li>
</ul>
</div>
Como posso selecionar apenas o último filho?
css
css-selectors
Miral
fonte
fonte
:last-child
. E não é que curioso.:first-child
é uma pseudoclasse CSS2,:last-child
uma pseudoclasse CSS3.:last-child
.Outra solução que pode funcionar para você é reverter o relacionamento. Portanto, você definiria a borda para todos os itens da lista. Em seguida, você usaria o primeiro filho para eliminar a borda do primeiro item. O primeiro filho é estaticamente compatível com todos os navegadores (o que significa que não pode ser adicionado dinamicamente por meio de outro código, mas o primeiro filho é um seletor CSS2, enquanto o último filho foi adicionado na especificação CSS3)
Nota: Isso só funciona da maneira desejada se você tiver apenas 2 itens na lista como o seu exemplo. Qualquer terceiro item em diante terá bordas aplicadas a eles.
fonte
Se você acha que pode usar Javascript, então, desde o suporte jQuery
last-child
, você pode usar o método css do jQuery e, a boa coisa, ele suportará quase todos os navegadoresCódigo de exemplo:
Você pode encontrar mais informações sobre aqui: http://api.jquery.com/css/#css2
fonte
$("#nav li:last-child").addClass('last-child')
para manter seu estilo nas folhas de estilo.div:last-child
ediv.last-child
. Parece que ele considera a:last-child
sintaxe inválida e qualquer classe com esse pseudo-seletor não será aplicada.Se o número de itens da lista for fixo, você pode usar o seletor adjacente, por exemplo, se você tiver apenas três
<li>
elementos, você pode selecionar o último<li>
com:fonte
li + #nav li
selecionali
dentro#nav
que vem depoisli
. Seu seletor deve simplesmente ser#nav li + li + li
.Se você costuma desejar seletores CSS3, poderá usar a biblioteca selectivizr em seu site:
http://selectivizr.com/
É um script JS que adiciona suporte para quase todos os seletores CSS3 para navegadores que de outra forma não os suportariam.
Jogue-o em sua
<head>
tag com uma condicional do IE:fonte
pseudo classe do último filho não funciona no IE
Compatibilidade CSS e Internet Explorer
Seletores CSS do IE7: como eles falham
fonte
Como alternativa ao uso de uma classe, você pode usar uma lista detalhada, definindo os elementos filho dt para ter um estilo e os elementos filhos dd para ter outro. Seu exemplo seria:
html:
Nenhum método é melhor do que o outro e é apenas uma questão de preferência pessoal.
fonte
Outra maneira de fazer isso é usar o seletor do último filho no jQuery e, em seguida, usar o método .css (). Porém, esteja cansado porque algumas pessoas ainda estão na idade da pedra usando navegadores com JavaScript desabilitado.
fonte
Por que não aplicar a borda na parte inferior do UL?
fonte
padding-bottom
no<ul>
elemento oumargin-bottom
no último<li>
elemento, ele não terá o posicionamento desejado logo abaixo do último<li>
elemento. Caso contrário, esta é uma boa solução.Se você estiver flutuando os elementos, você pode inverter a ordem
ou seja, em
float: right;
vez defloat: left;
E então use este método para selecionar o primeiro filho de uma classe.
Na verdade, isso está aplicando a classe à ÚLTIMA instância apenas porque agora está na ordem reversa.
Aqui está um exemplo prático para você:
fonte
É difícil dizer sem ver o resto do seu CSS, mas tente adicionar
!important
antes da cor da borda, para torná-lo assim:fonte