2015-07-14 2 views
1

Скажем, у меня есть такое правило, как это:CSS Selector по нескольким классам

.classA, .classB, li, .classC :nth-child(2) { 
    margin-top: 5px; 
} 

Это будет применять маржинальной-топ правила для всех этих классов и предметов. Однако предположим, что я хочу использовать селектор и применять правило ко всем, кроме первого элемента, который соответствует приведенному выше правилу. Например, если у меня есть:

<div class="classA"></div> 
<div class="classB"></div> 
<div class="classC"> 
    <ol> 
     <li></li> 
     <li></li> 
    </ol> 
</div> 

Я хотел бы, чтобы правило применяется только к классу B и двух элементов списка, но не класс А, который является первым элементом из перечисленных типов, а не ол , который вообще отсутствует в перечисленных типах. Есть ли способ применить селектор not: first-child к списку классов, а не только к одному классу?

В качестве другого примера:

<div class="classB"></div> 
<div class="notInList"></div> 
<div class="classA"></div> 

следует применять только правило к третьему DIV, CLASSA, а не первый (потому что это первое соответствие перечню, определяемому) или второй DIV (потому что это не в списке).

+0

Разбить правило на два отдельных правила, может быть? – ochi

+0

Итак, вы хотите, чтобы у всех этих div были маргинальные вершины, кроме ': first-child'? –

+0

Вы пытались удалить '.classA' из списка селекторов? –

ответ

0

Это может сделать трюк

div:not(:first-child) { 
    background-color: red 
} 
+0

Проблема в том, что это должно работать с несколькими типами элементов. В приведенном выше примере правило применяется к элементам списка, а также к div. Кроме того, он применяется только к divs определенного класса, а не для всех div. – David

2

Есть ли способ, чтобы применить не: селектор первого ребенка в список классов, а не только одного класса?

No.

Способ сделать это, чтобы дать все, что в вашей группе общий класс:

div { 
 
    height: 50px; 
 
    width: 50px; 
 
    margin: 2px; 
 
} 
 
.classA, .classB, .classC { 
 
    background-color: blue; 
 
} 
 
.fun-times:not(:first-child) { 
 
    background-color: red; 
 
}
<div class="classA fun-times"></div> 
 
<div class="classB fun-times"></div> 
 
<div class="classC fun-times"></div>

0

Вам нужно будет ссылаться на родительский элемент список:

.collection > :not(:first-child) { 
    background-color: aqua; 
} 

<div class="collection"> 
    <div class="classB">a</div> 
    <div class="notInList">b</div> 
    <div class="classA">c</div> 
</div> 

Если вы действительно хотите выбрать первый элемент подстановки в div, вы можете сделать именно это, независимо от того, у них нет классов или разные элементы, такие как span или div. Мы используем оператор>, который выбирает только прямых детей. Вы можете подстановочные псевдоэлементы вроде этого:

.collection > :first-child { 
    background-color: aqua; 
} 
+0

Это будет обрабатывать только тот случай, когда класс, который отсутствует в списке, явно указан .notInList. Его можно назвать чем-то другим. У этого также может быть класс. Кроме того, это не будет обрабатывать первый фрагмент кода, который содержит элементы списка, которые должны быть применены и содержатся в упорядоченном списке. – David

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