Селектор CSS для всех, кроме первого и последнего дочерних элементов


106

Я делаю очень продвинутый сайт. Мой вопрос: можно ли выбрать всех остальных детей, кроме :first-childи :last-child? Я знаю, что есть :not()селектор, но он не работает с несколькими, не указанными в скобках. Вот что у меня есть:

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

Вы очень смелы, чтобы использовать это. Обратите внимание, что он будет работать только в современных браузерах и определенно не будет работать в антибраузере, который все используют.
избавлен

2
@Radu: «Я делаю очень продвинутый веб-сайт» Нет
ничего

1
@BoltClock, верно, просто говорю ... Предупреждение. Но в любом случае, если целью является iOS Safari, как следует из названия изображения, это должно быть безопасно.
избавлен

1
Теперь я понимаю, почему этот вопрос кажется таким знакомым ... stackoverflow.com/questions/7403129/combining-not-selectors
BoltClock

"антибраузер"? Это новый Google Ultron, о котором я все время слышу?
Джонатан Дюмен

Ответы:


267

Попробуй #navigation ul li:not(:first-child):not(:last-child).


1
ТЫ ПРОСТО КЛАСС! Спасибо!
Daniel

1
rofl, глупость того, что я not()даже пробовал это до того, как погуглить: P genius
SidOfc

1
Это неправильно: not (A and B)не равно (not A) and (not B), скорее было бы (not A) or (not B). Это не работает.
Hibou57,

2
Нет, то, что сказал Салман Аббас, верно. Вы думаете о запятой; #navigation ul li: not (: first-child), #navigation ul li: not (: last-child)
user847074

20

Конечно, это сработает, вам просто нужно использовать два селектора «не».

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

Он будет продолжаться по строке после первого, говоря «не первый ребенок» и «не последний ребенок».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.