2015-11-11 2 views
5

Это, наверное, действительно глупый вопрос, но я не могу получить: не селектор для работы в css. Я хочу покрасить весь текст на моей странице, если у него нет класса под названием «nocolor». Вот код, я не вижу проблемы:CSS: не селектор не работает

*:not(.nocolor) { 
 
    color: #f00; 
 
}
<h2>Hello</h2> 
 
<h2 class="nocolor">Hello</h2>

+0

Мне бы очень хотелось знать, почему это так. Каждый браузер, на котором я тестировал его, имел такое же поведение. Я предполагаю, что это должно быть в спецификации где-то. –

ответ

3

Я был удивлен этим поведением, но селектор * относится к все так что вы должны смотреть на приложение к родителю элементы (например, теги body и html).

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

body *:not(.nocolor) { 
    color: red; 
} 
+0

Он работает, спасибо! –

+1

добавление '* {color: # 000;/* или независимо * /} 'перед селектором' *: not() '. –

+0

Можно ли использовать селектор для всех детей внутри него? Если я хочу изменить цвет тега p, который находится в div с классом nocolor, он не работает –

2

Ваш селектор должен быть записан следующим образом:

:not(.nocolor) { 
    color: #f00; 
} 

удалить «*», и это будет выбрать все на странице.

См документы здесь: MDN

2

Это потому, что * применяется к каждому элементу, включая body, который не имеет в .nocolor класс.

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

  • Нет связанных вопросов^_^