Перейти к содержимому

CSS псевдокласс :not()

Псевдокласс :not() соответствует элементам, которые не совпадают ни с одним из селекторов в списке.

Он также известен как псевдокласс отрицания. Это функциональный селектор псевдокласса, который принимает список селекторов в качестве аргумента и соответствует любому элементу, не совпадающему с этим аргументом. В спецификации Selectors Level 3 он принимает только простые селекторы. Selectors Level 4 допускает составные или сложные селекторы. Поддерживаемые аргументы включают:

  • Селектор типа (например, p, span)
  • Селектор класса (например, .element)
  • Селектор идентификатора (например, #header)
  • Селектор псевдокласса (например, :last-child, :first-of-type)
  • Селектор атрибута (например, [type="text"])
  • Универсальный селектор (*)

Важные примечания

  • Селектор :not() работает с псевдоклассами, но не поддерживает псевдоэлементы.
  • Специфичность :not() определяется самым специфичным селектором в его аргументе. Например, :not(.foo) имеет ту же специфичность, что и .foo (0, 1, 0).
  • :not(.foo) соответствует чему угодно, кроме .foo, включая <html> и <body>.
  • Селектор :not() применяется к любому элементу, который не совпадает с аргументом, а не только к одному конкретному элементу.

Версия

Selectors Level 3

Selectors Level 4

Синтаксис

Синтаксис CSS :not()

css
selector:not(argument) {
  css declarations;
}

Пример использования псевдокласса :not():

Пример кода CSS :not()

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      p {
        color: #666;
      }
      :not(p) {
        color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <h2>:not() selector example</h2>
    <p>Lorem Ipsum is simply dummy text</p>
    <p>Lorem Ipsum is simply dummy text</p>
    <div>Lorem Ipsum is simply dummy text</div>
    <a href="https://www.w3docs.com" target="_blank">Link to W3docs</a>
  </body>
</html>

В следующем примере представлен неупорядоченный список, у одного из элементов <li> которого задан класс.

Пример использования псевдокласса :not() с тегом <li>:

Ещё один пример кода CSS :not()

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      .text-blue {
        color: blue;
      }
      ul li:not(.text-blue) {
        color: #8ebf42;
      }
    </style>
  </head>
  <body>
    <h2>:not() selector example</h2>
    <ul>
      <li>List item 1</li>
      <li class="text-blue">List item 2</li>
      <li>List item 3</li>
    </ul>
  </body>
</html>

Практика

Что делает псевдокласс :not() в CSS?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.