Сбросить изменения псевдокласса в css

В приведенном ниже фрагменте я сделал первый элемент списка красным и скрыл все остальные элементы списка.

Затем я пытаюсь отобразить все элементы списка и сделать их все черными, ориентируясь на элементы li.

В настоящее время никаких изменений с использованием последнего селектора li не производится.

Итак, Мне интересно, почему последний селектор li не влияет на визуальный вывод?

Спасибо

li:not(:first-child) { /* Hide all li elements other than the first one */
  display: none;
}

li:first-child { /* Set list item 1 to be red */
  color: red;
}

/* Undo all changes above */
li { /* Make all li elements have this property ()*/
  display: block;
  color: black;
}
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

Я ожидаю, что все 3 элемента в списке будут черными, а не только первый красный.

Nick Parsons 04.08.2018 15:33
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
1
345
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

От https://developer.mozilla.org/en-US/docs/Web/CSS/:not

This pseudo-class can increase the specificity of a rule. For example, #foo:not(#bar) will match the same element as the simpler #foo, but has a higher specificity.

Ваше первое правило имеет более конкретную специфику, чем последнее правило, поэтому display: none; остается в силе, а display: block; игнорируется.

Ответ принят как подходящий

Увеличьте специфичность последнего селектора, чтобы получить нужный результат.

Вот пример, в котором все селекторы имеют одинаковую специфичность (класс + псевдокласс), и последний из них победит:

li:not(:first-child) { /* Hide all li elements other than the first one */
  display: none;
}

li:first-child { /* Set list item 1 to be red */
  color: red;
}

/* Undo all changes above */
li:nth-child(n) { /* Make all li elements have this property ()*/
  display: block;
  color: black;
}
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

Спасибо, в этом есть смысл. Вы знаете, почему мне нужно выбирать всех n детей? Разве выбор li уже не делает этого?

Nick Parsons 04.08.2018 15:39

@Nick Parsons: Как уже говорилось,: nth-child () обеспечивает специфичность псевдокласса, необходимую для соответствия первым двум правилам. Вы можете заменить его любым другим псевдоклассом, который гарантирует совпадение, например: not (: root).

BoltClock 04.08.2018 15:40

@NickParsons да li достаточно, и nth-child не добавит ограничений к селектору, он просто повысит специфику. Это не влияет на выбор, а влияет только на конкретность.

Temani Afif 04.08.2018 15:40

@NickParsons прочтите ссылку, которой я поделился, и вы получите дополнительную информацию;)

Temani Afif 04.08.2018 15:45

Другие вопросы по теме