Pagina inicial » Codificação » Uma olhada no Seletor Estrutural do Primeiro Tipo do CSS3

    Uma olhada no Seletor Estrutural do Primeiro Tipo do CSS3

    Este artigo faz parte do nosso "Série de tutoriais HTML5 / CSS3" - dedicado a ajudar a torná-lo um melhor designer e / ou desenvolvedor. Clique aqui para ver mais artigos da mesma série.

    Uma coisa que eu adoro no CSS3 é a nova adição de seletores que nos permite segmentar elementos especificamente sem depender do classe, identidade ou outro atributo de elemento, e um que abordaremos aqui é o seguinte seletor, : primeiro do tipo.

    o : primeiro do tipo O seletor segmentará o primeiro filho do elemento especificado, por exemplo, o snippet abaixo segmentará o primeiro h2 na página da web.

     h2: declaração de estilo / * first-of-type * / 

    o : primeiro do tipo também é igual a : n-de-tipo (1), então, ao invés de selecionar apenas o primeiro do tipo, podemos selecionar ainda o segundo, o terceiro e assim por diante. O snippet a seguir terá como alvo o segundo h2 elemento na página da web.

     h2: nth-of-type (2) / * declaração de estilo * / 

    : primeiro do tipo” vs. “:primeiro filho”

    Pode parecer que esses dois seletores estão fazendo a mesma coisa, mas esse não é o caso. Vamos ver a seguinte demonstração:

    Digamos que temos cinco elementos de parágrafos dentro de um div, como isso:

     

    Parágrafo 1

    Parágrafo 2

    Artigo 3

    Artigo 4

    Artigo 5

    Agora, gostaríamos de selecionar o primeiro parágrafo usando o :primeiro filho seletor.

     p: primeiro filho padding: 5px 10px; raio de fronteira: 2px; fundo: # 8960a7; cor: #fff; borda: 1px sólido # 5b456a;  

    E como previmos, o primeiro parágrafo é selecionado com sucesso.

    • : primeiro filho Demo

    No entanto, quando nós adicione um elemento diferente antes o primeiro parágrafo, digamos um h1, como o trecho abaixo:

     

    Cabeçallho 1

    Parágrafo 1

    Parágrafo 2

    Artigo 3

    Artigo 4

    Artigo 5

    o primeiro parágrafo não será selecionado, como a primeira criança dentro do div é não é mais um parágrafo, mas agora é um h1.

    Então, esta é a situação em que o : primeiro do tipo seletor vem para resolver o problema.

     p: first-of-type preenchimento: 5px 10px; raio de fronteira: 2px; plano de fundo: # a8b700; cor: #fff; borda: 1px sólido # 597500;  

    • : primeiro de tipo de demonstração

    o “Último” Seletor

    Onde há o “primeiro”, então também haverá o “último”.

    O reverso dos dois seletores que discutimos acima são os dois seletores seguintes; a : último filho e a : last-of-type. Eles basicamente são os mesmos que os dois acima, exceto que eles visam o último filho do elemento especificado.

    Por exemplo, esse snippet abaixo segmentará o último parágrafo dentro do div.

     p: último filho padding: 5px 10px; raio de fronteira: 2px; fundo: # 8960a7; cor: #fff; borda: 1px sólido # 5b456a;  
    • : Demo do último filho

    E esse snippet também terá como alvo o último parágrafo na mesma situação que discutimos acima; desta vez o

    é seguido diretamente por um elemento diferente.

     p: last-of-type preenchimento: 5px 10px; raio de fronteira: 2px; plano de fundo: # a8b700; cor: #fff; borda: 1px sólido # 597500;  
    • : Demo do último tipo

    O Selectivizr

    Como qualquer outro novo recurso no CSS3, esses seletores não são suportados em navegadores antigos, principalmente Internet Explorer 6 a 8, com uma exceção para o :primeiro filho selector, como foi adicionado desde CSS2.1. Seu parente o : último filho foi adicionado apenas em CSS3.

    Então, se todos esses seletores que mencionamos aqui forem realmente necessários para o seu site, você pode usar uma biblioteca JavaScript chamada Selectivizr para emular a funcionalidade do seletor CSS3.

    O Selectivizr depende de outras Bibliotecas JavaScript para funcionar, como o jQuery, Dojo, Prototype e MooTools; e vendo na tabela de comparação no site oficial, o MooTools parece ser capaz de lidar com todos os seletores.

    Então, vamos incluí-lo junto com o Selectivizr, como segue:

      

    O comentário condicional acima garantirá que essas bibliotecas só serão carregadas no Internet Explorer 8 e abaixo.

    Finalmente, você pode ver a demonstração nos links a seguir e agora deve funcionar tanto em navegadores modernos quanto antigos (IE8 e abaixo). Você também pode baixar o arquivo de origem para uma análise mais aprofundada. Apreciar.

    • Demonstração
    • Fonte de download