Проблема в вашем коде состоит в том, что первый список находится на другом «уровне потомка», чем второй список: ваш селектор CSS действителен только для li
элементов внутри ul
, который дочерний элемента, который не имеет .not-ql-editor
, который также является потомком элемента, который имеет класс .ql-editor
.
Чтобы это работало, вам нужна еще одна div
(или другая) оболочка вокруг вашегопервый ul
:
.ql-editor :not(.not-ql-editor) ul>li {
background: blue;
}
<div class="ql-editor">
<div>
<ul>
<li>hello></li>
<li>hello</li>
<li>hello</li>
</ul>
</div>
<div class="not-ql-editor">
<ul>
<li>hello</li>
<li>hello</li>
<li>hello</li>
</ul>
</div>
</div>
ДОБАВЛЕНИЕ после комментариев и редактирования вопроса:
В первом примере кода, который вы разместили, ваши элементы ul
находились на разных уровнях потомковиз элемента .ql-editor
DIV: первый ul
был директ-ребенком, второй - внуком, с .not-ql-editor
DIV в качестве оболочки между .ql-editor
и ul
. Мой ответ был направлен на эту ситуацию, и она сработала.
Во втором примере кода, который вы опубликовали, вы добавили еще один уровень: DIV без какого-либо класса между .ql-editor
DIV и .not-ql-editor
DIV. Это меняет вещи. В добавленной вами скрипте .not-ql-editor
DIV является прямым родителем ul
. Таким образом, вам нужно использовать это отношение для определения правила CSS, которое применяется, только если ul
является прямым дочерним элементом DIV, который не имеет.not-ql-editor
class.
в простом CSS это правило будет выглядеть следующим образом:
.ql-editor *:not(.not-ql-editor) > ul > li {
background: blue;
}
Вот ваш второй пример кода в сочетании с этим правилом CSS в фрагменте, фон не * не *стать синим:
.ql-editor *:not(.not-ql-editor) > ul > li {
background: blue;
}
<div class="ql-editor">
<div>
<div class="not-ql-editor">
<ul>
<li>hello</li>
<li>hello</li>
<li>hello</li>
</ul>
</div>
</div>
</div>
И вот ваша вторая скрипка с этим CSS, применяемым как SCSS: https://jsfiddle.net/e7d0h4yc/