Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Selecionando com nth-of-type.

Minha intenção: selecionar os elementos P dentro da section.blog com exceção do primeiro p.

Problema: Tentei selecionar os elementos p usando nth-of-type, mas não consegui. Talvez eu tenha entendido errado o uso de nth-of-child ou esteja utilizando ele errado, alguém pode dar um help?

Obrigado :)

<section class="secao-inicio blog">
            <h2>Blog</h2>
            <small>Últimos posts</small>
            <ol>
                <li class="mais-recente ">
                    <a href="blog.html">O essencial de design responsivo<span>&nbsp;</span></a>
                    <p class="inicio-post">Design responsivo tem ganho cada vez mais atenção como técnica de desenvolvimento de páginas web para dispositivos móveis. Mas como começar?</p>
                </li>
                <li>
                    <a href="blog.html">Por que fazer páginas acessíveis?</a>
                    <p>Tem se falado cada vez sobre acessibilidade na web. Há diversas técnicas e diretivas a serem seguidas, inclusive da própria W3C. Mas vale a pena investir nisso?</p>
                </li>
                <li>
                    <a href="blog.html">JavaScript não obstrusivo</a>
                    <p>JavaScript é uma linguagem essencial hoje em dia para criar páginas ricas, interativas e dinâmicas. Porém, há alguns cuidados que devem ser tomados ao colocarmos código JavaScript em nossas páginas.</p>
                </li>
            </ol>
            <a class="botao-index" href="blog.html">Veja mais</a>
        </section>
.blog p:nth-of-type(2n+1) {
    background-color: red;
}
7 respostas

Oi Laércio, tudo bem? Eu acho apenas que a regra nos parênteses não tá correta, se usar n + 2 (vai pegar do parágrafo 2 em diante).

Mas no caso do HTML mostrado, ele não vai pegar nenhum parágrafo por que o seletor está considerando parágrafos que são irmãos.

Entende? Se você quer selecionar parágrafos que estão a partir do segundo li da lista, ai a regra seria pro li e não pro parágrafo, faz sentido?

Oi Laércio uma alternativa para selecionar todas as tags <p> com exceção da primeira seria utilizar a pseudoclasse NOT:

O código da seleção leva em consideração que queremos todos os parágrafos menos o que tem a clase inicio-post.A seleção ficaria assim:

p:not(.inicio-post){
    background-color: red;
}

Espero ter ajudado e bons estudos.

Ola Wanderson, tranquilo? Então referente a expressão que passei para o parâmetro, dei uma estudada melhor e acho que agora entendi como funciona, me corrija se estou errado mas pelo que entendi é que:

Se quisesse selecionar apenas de 2 em 2 seria por exemplo nth-of-type(2n), se quisesse selecionar de 2 em 2 apartir do 3 seria: (3n+2) algo assim? o número antes do n seria o start e o número depois do mais(+) seria de quantos em quantos eu desejo "pular"? Mas isso só vale para quando dois números são declarados, se no caso quisesse selecionar de 1 em 1 apartir do segundo seria (n+2) ?

Agora só fiquei perdido quando você disse "ai a regra seria pro li e não p/ o parágrafo", no caso eu quero selecionar o p dentro do li, e não o li.

Poderia me dar um exemplo de como ficaria meu seletor do jeito que você falou?

Outra coisa no caso você disse que o seletor está considerando p que são irmãos, então o seletor nth-of-type só olha um "nível" na hierarquia é isso? No caso para olhar todos os elementos dentro de determinado elemento seria o nth-child?

Obrigado, fico no aguardo!

Olá Maison, tudo bem?

Valeu aí pela sugestão, não conhecia essa pseudoclasse e no caso ela resolve meu problema. Porém eu estava só praticando o uso das pseudoclasses nth-.

Obrigado.

solução!

Opa, se você por só 2, vai selecionar apenas o segundo item. Pra você ter a progressão, você precisa colocar o "n". Então "n + 2" seleciona todos a partir do segundo. "2n + 2" seleciona um sim outro não a partir do segundo, faz sentido?

Agora sobre o seletor. Seus posts estão em uma lista com um único parágrafo dentro.

.blog p:nth-of-type(2n+1) {
    background-color: red;
}

O trecho de código acima vai selecionar o todos os primeiros parágrafos e depois vai pular de 2 em 2, mas você não tem mais parágrafos adjacentes.

Então, do jeito que o HTML está, você querendo selecionar os parágrafos que estão a partir do segundo item da lista o seletor seria mais ou menos esse:

.blog li:nth-of-type(n+2) p {
    background-color: red;
}

Opa valeu pela ajuda Wanderson, agora ficou claro!

Muito Obrigado, até a próxima.

Até a próxima! Bons estudos! Abraço.