Я хотел бы написать правило селектора CSS, которое выбирает все элементы, которые не имеют определенного класса. Например, с учетом следующего HTML:
<html class="printable">
<body class="printable">
<h1 class="printable">Example</h1>
<nav>
<!-- Some menu links... -->
</nav>
<a href="javascript:void(0)" onclick="javascript:self.print()">Print me!</a>
<p class="printable">
This page is super interresting and you should print it!
</p>
</body>
</html>
Я хотел бы написать селектор, который выбирает все элементы, которые не имеют «printable» класса, в данном случае это nav и a элементы.
Это возможно?
ПРИМЕЧАНИЕ: в реальном HTML, где я хотел бы использовать это, будет гораздо больше элементов, у которых нет класса «пригодный для печати», чем у меня (я понимаю, что в приведенном выше примере все наоборот).
источник
:not()
на экране, он не будет поддерживать его и в печати.:not()
требуется только простой селектор, что означает, что он не может содержать вложенные селекторы, такие как:not(div .printable)
- см. Синтаксис селектора W3C:not(.active)
правиле могли быть просто переопределены свойствами в правиле с более высоким приоритетом.:not()
аргумента его аргумента, а значит:not(div)
, одинаково специфична дляdiv
,:not(.cls)
для.cls
и:not(#id)
для#id
.Фактически, это выберет все, к чему не применяется класс css (
class="css-selector"
).Я сделал демо jsfiddle
Это поддерживается? Да: Caniuse.com (по состоянию на 02 января 2020 г.) :
Забавно редактировать, я гуглил по противоположности: нет. CSS отрицание?
источник
:not
Класса Отрицание псевдоВы можете использовать,
:not
чтобы исключить любое подмножество совпадающих элементов, упорядоченных как обычные селекторы CSS.Простой пример: исключая по классу
div:not(.class)
Выбрал бы все
div
элементы без класса.class
Сложный пример: исключение по типу / иерархии
:not(div) > div
Выбрал бы все
div
элементы, которые не являются потомками другогоdiv
Сложный пример: цепочка псевдоселекторов
За заметным исключением невозможности связывать / вкладывать
:not
селекторы и псевдоэлементы, вы можете использовать их вместе с другими псевдо селекторами.Поддержка браузера и т. Д.
:not
это селектор уровня CSS3 , главное исключение с точки зрения поддержки - это IE9 +Спецификация также делает интересный момент:
источник
:not(div) > div
будет работать только с прямыми родителями. А как насчет других дедов?Я думаю, что это должно работать:
От "отрицательного селектора CSS" ответ .
источник
Просто хочу сказать, что приведенные выше ответы: not () могут быть очень эффективными в угловых формах, а не создавать эффекты или настраивать вид / DOM,
Гарантирует, что при загрузке вашей страницы в полях ввода будут отображаться недопустимые значения (красные границы или фоны и т. Д.), Если к ним добавлены данные (т.е. они больше не являются нетронутыми), но являются недействительными.
источник
пример
// Непрозрачность 0.6 все "section-", но не "section-name"
источник
Вы можете использовать
:not(.class)
селектор, как упоминалось ранее.Если вы заботитесь о совместимости Internet Explorer, я рекомендую вам использовать http://selectivizr.com/ .
Но не забудьте запустить его под Apache, иначе вы не увидите эффекта.
источник
Используя
:not()
псевдокласс:Для выбора всего, кроме определенного элемента (или элементов). Мы можем использовать
:not()
псевдокласс CSS .:not()
Псевдо - класс требуетCSS
селектора в качестве аргумента. Селектор будет применять стили ко всем элементам, кроме элементов, указанных в качестве аргумента.Примеры:
Мы уже можем видеть силу этого псевдокласса, он позволяет нам удобно точно настраивать наши селекторы, исключая определенные элементы. Кроме того, этот псевдокласс повышает специфичность селектора . Например:
источник
Если вы хотите, чтобы конкретное меню класса имело определенный CSS, если отсутствующий класс вошел в систему :
источник
Как говорили другие, вы просто сказали: нет (.class). Для селекторов CSS я рекомендую посетить эту ссылку, она была очень полезна на протяжении всего моего путешествия: https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
Псевдокласс отрицания особенно полезен. Допустим, я хочу выбрать все div, кроме той, которая имеет идентификатор контейнера. Приведенный выше фрагмент отлично справится с этой задачей.
Или, если бы я хотел выбрать каждый элемент (не рекомендуется), кроме тегов абзаца, мы могли бы сделать:
источник