#css #sass #less
#css #sass #Меньше
Вопрос:
У меня небольшая проблема с :not()
неправильной работой. Здесь стиль по-прежнему применяется, несмотря на :not(.no-dash)
селектор:
HTML
<div class="no-dash">
<h2>Simple title</h2>
</div>
SCSS
div:not(.no-dash) {
h2 ,h3, h4, h5, h6 {
margin-bottom: 36px;
amp;::after {
content: "";
display: block;
position: absolute;
bottom: -10px;
left: 0;
width: 45px;
height: 3px;
background-color: $color_yellow;
}
}
}
Мой реальный код:
HTML
<div class="row mt-5">
<div class="no-dash col-12 table-responsive">
<h3>Simplifiez-vous le quotidien :</h3>
<table class="table table-bordered mt-4">
<thead>
<tr class="text-center">
<td class="alert-danger" style="width:50%">
<h4><i class="fa fa-thumbs-down"></i> Un soucis ?</h4>
</td>
<td class="alert-info" style="width:50%">
<h4><i class="fa fa-thumbs-up"></i> Une solution</h4>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>Vous avez oublié vos clés ?</td>
<td>Nous avons le double !</td>
</tr>
<tr>
<td>Votre ampoule a grillé ?</td>
<td>Nous devons bien en avoir une d'avance !</td>
</tr>
<tr>
<td>La pile de votre souris est vide ?</td>
<td>Nous devons bien en avoir une d'avance !</td>
</tr>
<tr>
<td>Votre imprimante n'a plus d'encre ou est en panne ?</td>
<td>Nous pouvons imprimer vos documents !</td>
</tr>
<tr>
<td colspan="2">Etc., ...</td>
</tr>
</tbody>
</table>
</div>
</div>
SCSS
:not(.no-dash) {
h2, h3, h4, h5, h6 {
amp;:not(.no-dash) {
margin-bottom: 36px;
amp;::after {
content: "";
display: block;
position: absolute;
bottom: -10px;
left: 0;
width: 45px;
height: 3px;
background-color: $color_yellow;
}
}
amp;.text-center:not(.no-dash) {
amp;::after {
left: 50%;
transform: translate(-50%);
}
}
amp;.text-right:not(.no-dash) {
amp;::after {
left: auto;
right: 0;
}
}
}
}
Комментарии:
1. Это работает так, как ожидалось, проверьте это здесь .
2. Отсутствует закрытие
}
в первом примере?3. Действительно, «johannchopin» работает, но почему не для моего. 🙁 Nop «anderssonola» все
}
присутствуют. Я опубликую свой реальный код.
Ответ №1:
:not()
Селектор здесь не работает, потому что ваши h1
, h2
, h3
… вложены в несколько div
, и не все из них имеют исключенный класс. Убедитесь сами:
div:not(.no-dash) h2 {
color: red;
}
<div>
<div class="no-dash">
<h2>Nested in multiple div</h2>
</div>
</div>
<div class="no-dash">
<h2>Nested in a single div</h2>
</div>
<div>
<h2>With no class</h2>
</div>
Вы можете решить свою проблему, используя селектор дочернего комбинатора:
div:not(.no-dash) > h2 {
color: red;
}
<div>
<div class="no-dash">
<h2>Nested in multiple div</h2>
</div>
</div>
<div class="no-dash">
<h2>Nested in a single div</h2>
</div>
<div>
<h2>With no class</h2>
</div>
Это будет работать только в том случае, если элементы, которые вы хотите исключить, являются прямыми дочерними div
элементами того, к которому вы применяете исключенный класс.