Desenvolvimento - Javascript
jQuery — Seletores e estilização
Esta matéria tem por finalidade mostrar os fundamentos básicos de seleção e estilização com uso da biblioteca jQuery.
por Maurício Samy SilvaEsta matéria tem por finalidade mostrar os fundamentos básicos de seleção e estilização com uso da biblioteca jQuery.
Desenvolvemos uma página de apoio ao tutorial na qual é possível verificar na prática o funcionamento do script aqui mostrado. A página encontra-se neste endereço e sinta-se à vontade para visitá-la e constatar seu funcionamento antes de prosseguir a leitura.
Marcação HTML
Observe com cuidado a marcação da página de apoio na qual aplicaremos os scripts de seleção e estilização.
1. ... 2. <h1>jQuery — Seletores</h1> 3. <p>Página criada...</p> 4. <h2 id="um">Apresentação da jQuery</h2> 5. <p>jQuery é uma poderosa biblioteca...</p> 6. <p>Desenvolvedores especialistas em JavaScript...</p> 7. <h2 id="dois">Livro jQuery do Maujor</h2> 8. <p>Este livro, na primeira parte...</p> 9. <p>Na segunda parte...</p> 10. <p><a href="http://www.livrojquery.com.br">Visite...</a></p> 11. <h2 id="tres">Ficha Cadastral</h2> 12. <ul class="ficha"> 13. <li>Título: jQuery</li> 14. <li>Subtítulo: A biblioteca do programador JavaScript</li> 15. <li>Autor: Maurício Samy Silva</li> 16. <li>Nacionalidade do autor: Brasileiro</li> 17. <li>ISBN: 978-85-7522-178-5</li> 18. <li>Dimensões: 17x24 cm</li> 19. <li>Número páginas: 432</li> 20. <li>Preço: R$75,00</li> 21. <li>Tiragem: 2.000 exemplares</li> 22. <li>Palavras-chave: jQuery, JavaScript...</li> 23. </ul> 24. ...
CSS
A folha de estilos para o layout e apresentação da página de apoio não será analisada por ser irrelevante para o funcionamento do script. Contudo, há uma classe CSS chamada bloco, não constante da marcação, com respectiva regra CSS que será usada pelo script para demonstrar a adição de uma classe com uso do método addClass, como veremos adiante. A regra CSS é a seguinte:
1. .bloco { display:block; border:1px solid #000; }
Linkando os scripts
Scripts tal como folhas de estilos devem ser linkados ao documento onde serão empregados. Um documento que use a biblioteca jQuery deve estar linkado a ela como mostrado a seguir.
1. <head> 2. ... 3. <script type="text/javascript" src="jquery-x.x.x.mini.js"></script> 4. </head>
E os scripts que desenvolvemos para adicionar efeitos jQuery nas páginas devem ser também linkados ao(s) documento(s) que o(s) utilize(m). Na página de apoio usaremos o script incorporado ao documento para facilitar a consulta e estudo quando da visualização do código-fonte da página.
Scripts escritos em linguagem JavaScript e que façam busca de elementos da marcação para aplicar seus efeitos não funcionarão se forem declarados antes que o documento tenha sido carregado.
Quando colocamos um script na seção head do documento precisamos de um mecanismo para informar ao script que espere o documento ser carregado para entrar em ação. Em JavaScript tradicional a sintaxe consiste em encapsular o script em uma função definida para o método window.onload como mostrado a seguir.
1. <head> 2. ... 3. <script type="text/javascript"> 4. window.onload = function() { 5. ...script aqui... 6. } 7. </script>
A biblioteca jQuery usa um método próprio chamado ready() que é o equivalente ao método window.onload conforme mostrado a seguir.
1. <head> 2. ... 3. <script type="text/javascript"> 4. $(document).ready(function() { 5. ...script aqui... 6. }) 7. </script>
Agora estamos com o documento em condições de receber os scripts jQuery. A seção head contém o seguinte.
1. <head> 2. ... 3. <script type="text/javascript" src="jquery-x.x.x.mini.js"></script> 4. <script type="text/javascript"> 5. $(document).ready(function() { 6. ...script aqui... 7. }) 8. </script>
Método para adicionar estilos
A biblioteca jQuery dispõe do método css() que permite adicionar estilos aos elementos de um documento. O método admite duas sintaxes conforme mostrado a seguir.
Sintaxe para uma declaração CSS
Usada para regra CSS com apenas uma declaração a ser aplicada no elemento alvo do seletor. As propriedades CSS compostas de mais de um termo como são font-size, line-height, border-top-width têm seus equivalentes JavaScripts em grafia conhecida como camelCase e devem ser escritas fontSize, lineHeight, borderTopWidth respectivamente.
Exemplos:
1. css("color", "#fd6"); 2. css("fontSize", "14px"); 3. css("background", "blue"); 4. css("lineHeight", "1.2"); 5. css("border", "1px dotted #333");
Sintaxe para mais de uma declaração CSS
Usada para regra CSS com mais de uma declaração a ser aplicada no elemento alvo do seletor.
Exemplo:
1. css({ 2. color: "#fd6", 3. background: "blue", 4. lineHeight: "1.2", 5. border: "1px dotted #333" 6. });
Seletores tipo, id e class
A biblioteca jQuery faz uso dos seletores CSS para selecionar seus alvos na árvore do documento (DOM — Document Object Model). Tal como as CSS existem os seletores tipo, de identificador único e de classe cuja sintaxe é mostrada a seguir.
1. $("h3"); 2. $("ul"); 3. $("#topo"); 4. $("#principal"); 5. $(".separador"); 6. $(".destaque");
Código comentado
- Linha 1 — Seletor tipo - seleciona os elementos h3.
- Linha 2 — Seletor tipo - seleciona os elementos ul.
- Linha 3 — Seletor id - seleciona o elemento com id="topo".
- Linha 4 — Seletor id - seleciona o elemento com id="principal".
- Linha 5 — Seletor class - seleciona o(s) elemento(s) com class="separador".
- Linha 6 — Seletor class - seleciona o(s) elemento(s) com class="destaque".
Pseudoseletor :eq()
Uma funcionalidade poderosa da biblioteca jQuery é que as seleções retornam um conjunto que pode ser manipulado como array. Isto significa que ao contrário do que ocorre com a linguagem JavaScript formal não há necessidade de construção de loops para se percorrer uma seleção de elementos no DOM. O pseudo seletor :eq() permite selecionar uma ou mais ocorrências de uma seleção jQuery, conforme esclarecem os exemplos a seguir.
1. $("h2:eq(0)"); // seleciona a 1a. ocorrência de h2 2. $("ul li:eq(5)"); // seleciona a 6a. ocorrência do item de uma lista 3. $("p:eq(2n)"); // seleciona parágrafos de ordem ímpar
Nota: O parâmetro de seleção deste peseudoseletor pode ser um número ou uma expressão e segue o sistema de contagem padrão da linguagem JavaScript, isto é a contagem inicia em zero e não em um. Razão pela qual o seletor mostrado na linha 3 do código acima seleciona ocorrências ímpares e não pares, pois: 2x0 = 0 (primeira ocorrência), 2x1=2 (terceira ocorrência), 2x2=4 (quinta ocorrência), e assim por diante.
Métodos next(), children() e addClass()
Para a página de apoio que preparamos para demonstrar os efeitos estudados nesta matéria usaremos estes três métodos cuja finalidade é a seguinte.
- Método next() — seleciona o elemento seguinte na marcação do documento.
- Método children() — seleciona o(s) elemento(s) filho(s).
- Método addClass() — adiciona uma classe no(s) elemento(s) selecionado(s).
Aplicação prática
Vamos aplicar os conceitos de estilização e seleção estudados anteriormente para desenvolver o script que faz funcionar a página de apoio que você visitou, conforme sugerido no início desta matéria. A sintaxe é tão simples que eu tenho certeza que um simples análise do código mostrado a seguir permitirá chegar-se a conclusão sobre o funcionamento do script.
Consultando a marcação apresentada no início da matéria acompanhe atentamente o script a seguir.
1. <script type="text/javascript"> 2. $(document).ready(function(){ 3. $("#um").css("background", "#ff6"); 4. $("#dois").css({ 5. background: "#f00", 6. color: "#fff", 7. padding: "5px 0", 8. textAlign: "center" 9. }); 10. $("h2:eq(2)").css("color", "blue"); 11. $("#tres") 12. .next() 13. .children("li:first-child") 14. .css("fontWeight, "bold"); 15. $(".ficha li:nth-child(5)").css("background", "#0f0"); 16. $("cite").addClass("bloco"); 17. $("a[href*="livro"]").css("color", "#ff4500"); 18. }); 19. </script>
Código comentado
- Linhas 2 até 19 — Container do método ready().
- Linha 3 — Seleciona o elemento com id="um" e aplica uma cor de fundo amarela.
- Linhas 4 até 9 — Seleciona o elemento com id="dois" e usando a sintaxe para múltiplas declarações CSS aplica vários estilos.
- Linha 10 — Usa o pseudoseletor :eq() para selecionar a terceira ocorrência de cabeçalho nível 2 e aplica a cor azul para o seu texto.
- Linha 11 até 14 — Seleciona o elemento com id="tres" (terceira ocorrência de h2), usa o método next() para selecionar o elemento que vem depois dele (lista ul), procura entre os filhos children() de ul aquele que é o primeiro filho first-child e a ele aplica negrito.
- Linha 15 — Seleciona os elementos li que são descendente do elemento com class="ficha", procura a quinta ocorrência nth:child(5)e a ela aplica uma cor de fundo verde.
- Linha 16 — Seleciona os elementos cite e a eles adiciona a classe bloco. Notar que foi definida uma regra de estilo para esta classe e em consequência quando o script entrar em ação os elementos cite da página seguirão esta regra CSS.
- Linha 17 — Usa um seletor de atributo para mudar a cor dos links que contenham a palavra "livro" no atributo href.
Dúvidas com seletores CSS? Consulte:
Seletores CSS 2.1
Seletores CSS 3