Селектор 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) {

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

злой дух
источник