Почему не срабатывает псевдокласс :last-child?

Ссылка скопирована
7 января 2026 1 ответ

В трех разных средах :last-child в моем примере ведет себя по-разному. В браузере на моем компьютере Кот красный, как я и ожидал, Аист - черный, хотя вроде должен быть голубой. Вот в этой песочнице https://codepen.io Кот - красный, Аист - голубой (как и должно быть по идее). А в этой https://jsfiddle.net/ и Кот, и Аист черные, т.е. на них вообще не действуют псевдоклассы.
html

<body>   <span>Кот</span>   <div>     <span>Собака</span>     <span>Бегемот</span>     <i>Тигр</i>     <span>Антилопа</span>   </div>   <span>Носорог</span>   <div>     <span>Жираф</span>     <i>Чупакабра</i>     <span>Крокодил</span>     <span>Пантера</span>   </div>   <div>     <span>Слон</span>   </div>   <span>Аист</span> </body>

<body> <span>Кот</span> <div> <span>Собака</span> <span>Бегемот</span> <i>Тигр</i> <span>Антилопа</span> </div> <span>Носорог</span> <div> <span>Жираф</span> <i>Чупакабра</i> <span>Крокодил</span> <span>Пантера</span> </div> <div> <span>Слон</span> </div> <span>Аист</span> </body>

css

span:first-child {   color: red; }  span:last-child {   color: aqua; }

span:first-child { color: red; } span:last-child { color: aqua; }

Дополнительно:

и там и там норм отображается

Это потому, что jsfiddle подставляет свои тэги в конец кода и Аист перестаёт быть последним потомком своего родителя, им становится script.

Почему не срабатывает псевдокласс :last-child?

  • Вот оно что. Проверил в локальных браузерах - там тоже в конец добавляется какой-то скрипт. А это можно как-то избежать? Ведь по сути из-за такой медвежьей услуги не работает как надо.
  • johnymkp, положи всё ещё в один контейнер, а не сразу в body
  • johnymkp, Стандартно не должно ничего добавляться. Если сделаете отдельные html- и css-файлы и откроете страницу локально (file://) или с сервера, то браузер сам ничего не подставит.
    В песочницах добавляет именно сама песочница. Можно убрать body, тогда jsfiddle сам обернёт код в div и скрипты будут после div'а.
  • johnymkp, оберните свой код в div, если вам важно его содержимое.
  • Rsa97, На проде по-любому навешают метрик всяких и будет подставляться куча разных скриптов, фреймов и прочей ерунды, плюс браузерные расширения ставят так же, подключают скрипты, стили и скрытые блоки..
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Псевдокласс :last-child применяется к последнему потомку элемента, который является дочерним элементом его родителя. Однако, есть несколько причин, по которым может не срабатывать этот псевдокласс:

1. Неправильное понимание структуры DOM: Убедитесь, что вы правильно определили родительский элемент и его дочерние элементы. Если ваш элемент не является последним потомком своего родителя, то псевдокласс :last-child не будет применен.

2. Наличие других элементов после целевого элемента: Если после целевого элемента есть другие элементы (например, текст, комментарии и т. д.), то псевдокласс :last-child не будет считаться последним потомком и не будет применен.

3. Несоответствие стилизации: Убедитесь, что вы правильно применяете стили к элементу с помощью правильного селектора. Проверьте другие стили, которые могут перекрывать или переопределять стиль, примененный с помощью псевдокласса :last-child.

Пример использования псевдокласса :last-child для элементов с классом "example":

.example:last-child {
  color: red;
}

.example:last-child { color: red; }

Если после выполнения этих шагов проблема все еще не решена, попробуйте использовать инструменты разработчика браузера для отладки CSS и проверки применения стилей к вашему элементу.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно