Вопрос выбора CSS3 для всех, кроме первого выбора - PullRequest
76 голосов
/ 21 февраля 2011

Со следующей разметкой я хочу, чтобы CSS-селектор выбирал все, кроме первого меню выбора в каждом элементе div, которых может быть много:

<div class="options">
    <div class="opt1">
        <select title="Please choose Warranty">
            <option value="">Select Waranty</option>
            <option value="1">1 year guarantee</option>
            <option value="2">3 year guarantee</option>
        </select>
    </div>
    <div class="opt2">
        <select title="Please choose Color">
            <option value="">Select Color</option>
            <option value="1">Red</option>
            <option value="2">Blue</option>
        </select>
    </div>
    <div class="opt3">
        <select title="Please choose Size">
            <option value="">Select Size</option>
            <option value="1">Small</option>
            <option value="2">Big</option>
        </select>
    </div>
</div>

Я использую это в Prototype, который имеет почти полную поддержку селектора css3, поэтому не заботится о поддержке браузера.

Первоначальный селектор будет выглядеть примерно так:

div.options div select

Я пробовал несколько вариантов nth-child и :not(:first-child), но не могу заставить его работать.

Ответы [ 2 ]

116 голосов
/ 21 февраля 2011

См .: http://jsfiddle.net/uDvEt/1/

.options > div:not(:first-child) select { background:yellow;}
45 голосов
/ 21 февраля 2011

Вам нужно выбрать опцию div s вместо select s при использовании :not(:first-child), потому что каждый select является первым (и единственным) дочерним элементом своего родителя div:

div.options > div:not(:first-child) > select

Альтернативой :not(:first-child) является использование :nth-child() со начальным смещением 2, например:

div.options > div:nth-child(n + 2) > select

Другая альтернатива - общий комбинатор сестер ~ (который поддерживается IE7 +):

div.options > div ~ div > select
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...