2014-09-23 3 views
0

Почему я не могу сделать div:not(.wrapper2 .exception)? То есть. все divs кроме .wrapper2 .exception.Невозможно выполнить `: not (.foo .bar)`

http://jsfiddle.net/frank_o/4swjmhtr/

HTML:

<div class="wrapper1"> 
    <div> 
     <p>Hi</p> 
    </div> 
    <div class="exception"> 
     <p>Hi</p> 
    </div> 
</div> 
<div class="wrapper2"> 
    <div> 
     <p>Hi</p> 
    </div> 
    <div class="exception"> 
     <p>Hi</p> 
    </div> 
</div> 

CSS:.

div:not(.wrapper2 .exception) { 
    background: blue; 
    color: white; 
} 
+0

мутноватый, что вы просите. Это тот, который вы хотите, кроме '.wrapper2 .exception' или' .wrapper2' и '.exception'? – Scimonster

+0

Привет! Все divs кроме '.wrapper2 .exception' да. Благодарю. Обновленный вопрос. –

+1

Это объясняет причину: http://stackoverflow.com/questions/7403129/combining-not-selectors-in-css/7403148#7403148 –

ответ

3

Вы не можете комбинировать not() селекторов, как это, только один селектор может одновременно идти в

Чтобы выбрать все divs, кроме .exception внутри .wrapper2:

div:not(.wrapper2) div:not(.exception) 
+0

Как вы знаете, что ОП не собирался применять его только к последним 'div', который является' .wrapper2 .exception'. – Scimonster

+0

Вы правы, я неправильно понял вопрос. Обновлен мой ответ –

+0

http://jsfiddle.net/4swjmhtr/2/ теперь он нацелен только на первый div – fcalderan

3

Если вы ориентируетесь все дочерние Див за исключением последнего, это то, что нужно.

div > div { 
 
    background: blue; 
 
    color: white; 
 
} 
 
div.wrapper2 > div.exception { 
 
    background: none; 
 
    color: inherit; 
 
}
<div class="wrapper1"> 
 
    <div> 
 
     <p>Hi</p> 
 
    </div> 
 
    <div class="exception"> 
 
     <p>Hi</p> 
 
    </div> 
 
</div> 
 
<div class="wrapper2"> 
 
    <div> 
 
     <p>Hi</p> 
 
    </div> 
 
    <div class="exception"> 
 
     <p>Hi - not this one!</p> 
 
    </div> 
 
</div>

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