Estou tentando selecionar o primeiro h1
dentro de um div
com uma classe chamada detail_container
. Funciona se h1
for o primeiro elemento dentro disso div
, mas se vier depois disso ul
, não funcionará.
<style type="text/css">
.detail_container h1:first-child
{
color:blue;
}
</style>
</head>
<body>
<div class="detail_container">
<ul>
<li></li>
<li></li>
</ul>
<h1>First H1</h1>
<h1>Second H1</h1>
</div>
</body>
</html>
Fiquei com a impressão de que o CSS que tenho selecionará o primeiro, h1
não importa onde esteja div
. Como posso fazer funcionar?
css
css-selectors
O Homem Muffin
fonte
fonte
Respostas:
O
h1:first-child
seletor significaO
:first-child
do contêiner aqui é oul
e, como tal, não pode satisfazerh1:first-child
.Existem CSS3
:first-of-type
para o seu caso:Mas com os problemas de compatibilidade do navegador e outros enfeites, é melhor você dar
h1
uma aula ao primeiro e depois direcionar essa aula:fonte
:first-of-type
seletor.:first-of-type
. O link antigo está incorreto.:first-child
não é claro para entender, porque você define o item como seletor CSS, digamosh1
, e, subsequentemente, pensa "pegar o primeiro filho" de todos no nível DOM escolhido. Eu usei errado tantas vezes ... Temos que nos acostumar com o:first-of-type
seletor e pensar no primeiro filho desse tipo.:first-child
seleciona o primeiroh1
se, e somente se , for o primeiro filho de seu elemento pai. No seu exemplo, oul
é o primeiro filho dodiv
.O nome da pseudoclasse é um tanto enganoso, mas é explicado com bastante clareza aqui nas especificações.
O
:first
seletor do jQuery oferece o que você está procurando. Você consegue fazer isso:$('.detail_container h1:first').css("color", "blue");
fonte
Para esse caso específico, você pode usar:
Mas se você precisa desse mesmo seletor em muitos casos, você deve ter uma classe para eles, como o BoltClock disse.
fonte
você também pode usar
Alterando o número 1 por qualquer outro número, você pode selecionar qualquer outro item h1.
fonte
Você poderia envolver suas
h1
tags em outradiv
e, em seguida, a primeira seria ofirst-child
. Issodiv
nem precisa de estilos. É apenas uma forma de segregar essas crianças.fonte
O elemento não pode herdar diretamente da
<body>
tag. Você pode tentar colocá-lo em uma<dir style="padding-left:0px;"></dir>
tag.fonte