Eu tenho o seguinte html
<div class="section">
<div>header</div>
<div>
contents
<div>sub contents 1</div>
<div>sub contents 2</div>
</div>
</div>
E o seguinte estilo:
DIV.section DIV:first-child
{
...
}
Por alguma razão que não entendo, o estilo está sendo aplicado ao "sub conteúdo 1" <div>
e ao "cabeçalho" <div>
.
Eu pensei que o seletor no estilo se aplicaria apenas ao primeiro filho direto de uma div com uma classe chamada "seção". Como posso alterar o seletor para obter o que quero?
html
css
css-selectors
Jeremy
fonte
fonte
Respostas:
O que você postou significa literalmente "Encontre quaisquer divs que estejam dentro da seção divs e sejam o primeiro filho de seus pais". O sub contém uma tag que corresponde a essa descrição.
Não está claro para mim se você quer os dois filhos da div principal ou não. Se sim, use o seguinte:
Se você deseja apenas o cabeçalho, use o seguinte:
Usando as
>
alterações, a descrição para: "Encontre quaisquer divs que sejam descendentes diretos da seção divs", que é o que você deseja.Observe que todos os principais navegadores oferecem suporte a esse método, exceto o IE6. Se o suporte ao IE6 for essencial, você precisará adicionar classes aos divs filhos e usá-lo. Caso contrário, não vale a pena se preocupar.
fonte
div.section > div:first-child > div { /* Cancel Changes*/}
Encontrei esta pergunta pesquisando no Google. Isso retornará o primeiro filho de um elemento com classe
container
, independentemente do tipo de filho.fonte
O CSS é chamado de Cascading Style Sheets porque as regras são herdadas. Usando a seguinte seletor, irá selecionar apenas o filho direto do pai, mas suas regras será herdada por que
div
as crianças 'sdivs
:Agora, isso
div
e seus filhos serãored
. Você precisa cancelar o que definir no pai, se não desejar que ele seja herdado:Agora, apenas aquele solteiro
div
que é filho direto dediv.section
será vermelho, mas seus filhosdivs
ainda serão negros.fonte
fonte
Use
div.section > div
.Melhor ainda, use uma
<h1>
tag para o cabeçalho ediv.section h1
no seu CSS, para oferecer suporte a navegadores mais antigos (que não conhecem o>
) e manter sua marcação semântica.fonte
O seletor CSS para o primeiro filho direto no seu caso é:
O seletor direto é> e o primeiro seletor filho é: primeiro filho
Não há necessidade de um asterisco antes do: como sugerem outros. Você pode acelerar a pesquisa do DOM modificando esta solução acrescentando a tag:
fonte