не работает first-child
#theme-switch:first-child {
position: absolute;
display: none;
}
<div id="theme-switch">
<img src="images/theme-dark.png" alt="">
</div>
<div id="theme-switch">
<img src="images/theme.png" alt="">
</div>
Ответы (1 шт):
Во-первых, id должны быть уникальны и не повторяться на странице. Но к вопросу по css это отношения не имеет. Вот если бы вопрос был про js, то там замечательные фокусы могут получаться.
:first-child
применяется к элементу, который в разметке является первым потомком своего родителя и работает отлично и кроссбраузерно, причём очень давно. Следовательно, если он не работает, то элемент не является первым потомком.
Открой девтулы и посмотри, какая разметка у тебя получилась.
Я надеюсь, что прежде чем задавать вопрос, ты хотя бы в коде убедился, что элемент является первым потомком. В таком случае расхождение между твоим кодом и реальной dom-структурой вызвано тем, что твой html невалиден и правила парсинга заставляют браузер сделать что-то неожиданное.
На вскидку могу представить 3 такие ситуации:
- Элемент является первым в
body
, но вhead
есть элементы, которых там быть не должно (p
,div
). В таком случае браузер закрываетhead
и начинаетbody
автоматически, а открывающий тегbody
игнорируется. - Ты кладёшь
div
внутрьp
. В таком случаеp
немедленно закрывается иdiv
идёт за ним. - Ты кладёшь
div
непосредственно в список (вместоli
) или в таблицу (вместо тела, строки или ячейки). Не уверен, но кажется такие элементы выкидываются за пределы того, в чём они написаны.