2015-12-17 4 views
2

я следующие дивы:селектор CSS для определенного положения соответствующих классов

<div class="c"> 
    <div class="a"></div> 
    <div class="a"></div> 
    <div class="a"></div>//this 
</div> 
<div class="c"> 
    <div class="a"></div>//this 
    <div class="a"></div>//this 
    <div class="a"></div> 
</div> 
<div class="c"> 
    <div class="a"></div> 
    <div class="a"></div> 
    <div class="a"></div> 
</div> 

Есть ли селектор CSS, который позволяет мне выбрать .a элементы, расположенные в 3-й, 4-й и 5-е место в .a соответствие результатов ?

Нечто похожее на eq() в jQuery.

: nth-child() здесь не помогает, так как это просто упрощенный случай.

This is a fiddle с результатами использования jQuery. Я хочу знать, есть ли решение, использующее только CSS.

+0

может быть так? - https://jsfiddle.net/soledar10/kdym6f5a/ – Dmitriy

+0

То, что я ищу, это именно eq(), но в CSS, если оно существует, просто укажите количество позиций из согласованных результатов. – Alvaro

ответ

4

Нет, нет эквивалента jQuery's :eq() в CSS. На простом английском языке нет селектора для n-го элемента, соответствующего сложному селектору (в вашем примере 3-й, 4-й и 5-й элементы соответствуют селектору .a).

Просто для полноты картины (потому что кто-то собирается сказать "well, actually..."), специфические элементы, конечно, достижимых с

.c:nth-child(1) > .a:nth-child(3), .c:nth-child(2) > .a:nth-child(1), .c:nth-child(2) > .a:nth-child(2) 

Но это предполагает, что это точно как выглядит разметка, что редко бывает реалистичным предположением, особенно если страница динамически генерируется.

В очень редких случаях, когда разметка является статической, и вы можете полагаться на 3-й, 4-й и 5-й .a элементов, находящихся в этих точных положениях, все средствами использовать селектор выше. Но если их позиции или структура могут быть разными, вам понадобятся другие способы их идентификации в CSS, например, с дополнительным именем класса.

+0

Я искал eq(), но в CSS, или какой-то другой умный способ. Другой результат - не то, что я искал. Спасибо, что сообщили мне – Alvaro

+0

Разметка будет динамичной. Точный сценарий заключается в том, что я хочу применить стиль к следующему и предыдущему .a щелчка .a. Несколько кликов будут сделаны, поэтому мне нужно полагаться на какое-то решение как eq(), но я задавался вопросом, есть ли что-то, что нужно сделать, просто добавив класс к клику (и css сделает все остальное). – Alvaro

0

.c:nth-child(1) .a:nth-child(3) { background:yellow; } 
 
.c:nth-child(2) .a:nth-child(2), .c:nth-child(2) .a:nth-child(1) { background:yellow; }
<div class="c"> 
 
    <div class="a">c1-a1</div> 
 
    <div class="a">c1-a2</div> 
 
    <div class="a">c1-a3 //this</div> 
 
</div> 
 
<div class="c"> 
 
    <div class="a">c2-a1 //this</div> 
 
    <div class="a">c2-a2 //this</div> 
 
    <div class="a">c2-a3</div> 
 
</div> 
 
<div class="c"> 
 
    <div class="a">c3-a1</div> 
 
    <div class="a">c3-a2</div> 
 
    <div class="a">c3-a3</div> 
 
</div>

Смежные вопросы