Quarta-feira, 25 de março de 2009 às 11h00

Seletores Complexos do CSS

Faça o curso: jQuery na Prática

Os seletores complexos foram feitos para suprir necessidades muito específicas do layout. Por exemplo: imagine uma página de cadastro. Nessa página há um formulário enorme, com campos de todos os tipos: radio, checkbox, text, submit etc.

Você precisa, por exemplo, definir uma largura para os campos de texto. Você não poderá colocar a linha como a de baixo:

input {
    width: 200px;
}

Com essa linha você fará com que todos os inputs fiquem com largura de 200px, inclusive os inputs de radio, checkbox, submit, image, etc. Se você gostaria apenas que os inputs de text ficassem desse tamanho, terá que marcar com um CLASS todos os inputs com seus respectivos tipos, por exemplo:

<form action="">
    <fieldset>
        <label>Nome: <input type="text" class="input-text" /></label>
        <label><input type="checkbox" class="input-checkbox" /> Desejo receber newsletters</label>
    </fieldset>
</form>

Assim, você pode definir no CSS cada elemento pela sua classe. Acontece que você está colocando um atributo a mais, fazendo com que o código fique maior. Esse layout pode já estar publicado, e pode ser complicado modificar diretamente o HTML por conta do código server-side. Por isso, pelo CSS, podemos utilizar os seletores complexos para manipular elementos específicos sem a necessidade de modificar o HTML diretamente.

No caso acima, usaríamos o seguinte código para selecionar apenas os elementos de input de texto:

input[type="text"] {
    width: 200px;
}

Perceba que no seletor há o objeto que você quer modificar: o INPUT. Mas não são todos os inputs. Entre os colchetes especificamos a exceção. No exemplo acima, selecionamos os inputs com o atributo TYPE com o valor TEXT.

Entre os colchetes você pode colocar uma série de sentenças que podem selecionar elementos bem específicos na tela. Aqui vão alguns exemplos:

Seletor
Descrição
input[type="text"] Seleciona o elemento INPUT com o atributo TYPE cujo valor seja TEXT
a[href$=html] Seleciona elementos com atributos cujo seu valor temine com? Por exemplo, você poderia querer selecionar todos os links que apotam para um arquivo .pdf, ou .php etc.
a[href^="http://tableless.com.br/"]  Seleciona elementos com o atributos que comecem com? Você pode querer selecionar apenas os links que apontem para um site específico, por exemplo.
a[title~="tableless"]   Seleciona os elementos cujo o atributo tenha um valor que seja separado por espaços. No exemplo acima ele seleciona um link que contenha o atributo title e que em seu valor tenha a palavra tableless no meio.

Este artigo faz parte de uma série de textos técnicos sobre CSS, que ignora totalmente browsers antigos. Estou nivelando esse assunto por cima. Portanto, se você é fã do IE6 ou outro browser antigo qualquer, seu lugar não é aqui.

Se você quer acompanhar essa pequena campanha, veja no Twitter o que nós podemos fazer sem o IE6. Siga o hash #semie6.

10 comentários

 Bruno Simões
25/03/2009 12h32

Browsers

Isso realmente é muito útil.
O problema é que atualmente muitos usuários AINDA tem IE 6.0 (aproximadamente 30% de visitantes no meu caso), o que dificulta esse "nivelamento".
Espero que logo esse problema acabe de vez e possamos passar a aplicar CSS 3 sem ficar definindo quem poderá ver aquilo, e quem não vai.
Mas mantém-se a importância do artigo, pois a tendência é essa, e temos que estar preparados para abusar dela quando o IE6 virar lenda.

 Lucas Vieira Filho
25/03/2009 12h49

Se não pode vencê-lo, junte-se a ele... O fato é que o IE6 só vai virar lenda quando uma nova versão de windows se tornar a padrão...

Para aproveitar o CSS mesmo no IE6, tem uma biblioteca que fizeram (daria o crédito se soubesse quem fez), q aumenta o grau de compatibilidade com CSS.

Veja em:
http://code.google.com/p/ie7-js/


 Araguaci Andrade
25/03/2009 13h20

É verdade, normalmente utilizo o firefox e ja aconteceu várias vezes, executei uma melhoria e publiquei achando que estava tudo bem, mas no IE a coisa nem sempre funciona... Temos que cuidar sempre de testar todos os browsers, inclusive o Chrome.

 Araguaci Andrade
25/03/2009 13h20

Ótimo Artigo

PARABÉNS!

 Bruno Scopel
26/03/2009 10h48

FÃ?

Muito legal e técnico! Mas ainda não dá pra usar. Não se pode ignorar os usuários de IE 6, e PONTO FINAL. E não é opinião de "fã", até porque creio não existir nesse planeta algum fã do IE 6. Ah sim, e "Portanto, se você é fã do IE6 ou outro browser antigo qualquer, seu lugar não é aqui." pegou muito, mas muito mal.

 Leonardo Cabral
26/03/2009 11h02

Concordo que foi exacerbada a assertividade no texto quanto ao lugar das pessoas num meio de livre acesso como a Web. Assertividade se confunde com arrogância quando mal utilizada. Entretanto não é esse o foco desse comentário. Devo aqui discordar do meu colega, Scopel. O IE6 não é mais suportável (em diversos interpretações da palavra) para o que consideramos uma "experiência ótima para o usuário". Não vejo porque explicar os porquês dos motivos aqui. Há gigabytes de dados sobre isso na Web. Não leve a mal. Estou do seu lado.

 Bruno Scopel
26/03/2009 11h13

"Não se pode ignorar os usuários de IE 6, e PONTO FINAL." - Não disse isso em relação à experiência de navegação, simplesmente é o fato de desenvolvimento. Se a vida fosse fácil assim, a Microsoft (péssimo exemplo, mas vale) ignoraria usuários de Windows ME, 2000, XP, e etc, e lancaria só programas pra Vista. "- Você usa XP? Sistema ultrapassado cara, tá na hora de piratear o novo." - Na minha opinião PESSOAL, enquanto existir uns 5% de usuários de IE6, esse INFELIZ não pode ser ignorado, e não teremos liberdade total. Enfim, falar de IE 6 é pior (ou quase) de falar sobre religião ou política.

 René Bizelli de Oliveira
30/03/2009 17h40

nao rolou com IE7.. pq?

ola pessoal.. no meu IE 7 nao rolou esse exemplo. tem mais algum macete?
valeu

 René Bizelli de Oliveira
30/03/2009 17h49

ops.. coloquei o DOCTYPE e tudo funcionou :)

 Raphael França Marques
01/04/2009 16h20

eita!

nossa, esses seletores ajudariam muito *--*
Putz, pq a microsoft nao libera atualização do XP pra todo mundo mesmo pirata, pelo menos a atualização vem com IE7, que já quebraria nosso galho contra o IE6.

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.