Seletor CSS para outro que não seja o primeiro e último filho


105

Estou fazendo um site muito avançado. Minha pergunta: É possível selecionar todas as outras crianças, exceto para o :first-childe o :last-child? Eu sei que há um :not()seletor, mas ele não funciona com mais de um que não esteja entre parênteses. Isso é o que eu tenho:

#navigation ul li:not(:first-child, :last-child) {
    background: url(images/UISegmentBarButtonmiddle@2x.png);
    background-size: contain;
}

Você é muito corajoso para usar isso. Observe que ele só funcionará em navegadores modernos e definitivamente não funcionará no antinavegador que todos estão usando.
rid

2
@Radu: "Estou fazendo um site muito avançado" Nenhuma surpresa aí ...
BoltClock

1
@BoltClock, certo, apenas dizendo ... Aviso. Mas de qualquer maneira, se o alvo for o iOS Safari, como o nome da imagem sugere, então deve ser seguro.
rid

1
Agora eu vejo por que essa pergunta parece tão familiar ... stackoverflow.com/questions/7403129/combining-not-selectors
BoltClock

"anti-navegador"? Esse é o novo Google Ultron de que sempre ouço falar?
Jonathan Dumaine

Respostas:


262

Experimente #navigation ul li:not(:first-child):not(:last-child).


VOCÊ É INCRIVEL! Obrigado!
Daniel,

1
rofl, que estupidez de eu not()tentar fazer isso antes de pesquisar no Google: P genius
SidOfc

1
Errado: not (A and B)não é igual a (not A) and (not B), preferia ser (not A) or (not B). Não funciona.
Hibou57 de

2
Não, o que Salman Abbas disse está certo. Você está pensando na vírgula; #navigation ul li: not (: first-child), #navigation ul li: not (: last-child)
user847074

20

Claro que vai funcionar, você só precisa usar dois seletores "não".

#navigation ul li:not(:first-child):not(:last-child) {

Ele continuará na linha seguinte, dizendo "não é o primeiro filho" e "não é o último filho".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.