
Mais uma vez estamos aqui com um artigo de jQuery, e agora com o quinto artigo da série, espero que estejam gostando e entendendo, porque poucas pessoas estão colocando dúvidas, o que é muito bom, sinal que está bem explicado.
Agora vamos começar a desenvolver algo que realmente pode ser aplicado de maneira ativa em um site. É um sistema bem simples de abas. Mas é claro, se você não viu os artigos anteriores eu acho que é importante antes de começar a ler este. Pois coisas explicadas anteriormente não serão explanadas, abaixo vai uma lista com os últimos artigos:
- Aprendendo a importar o Framework do Google
- Início de Eventos e Efeitos [FadeTo e Toggle]
- Manipuladores modificando uma Classe
- Manipulação textual
Vamos ao código…
Como nos outros eu não pretendo comentar muito o CSS e o HTML pois não são o foco destes artigos, então caso deseje entender pode dar uma olhada nas aulas de HTML do Guanabara.info e para CSS sugiro o Maujor, muito bom.
O código CSS que deve entrar no seu cabeçalho[head] deve ser o seguinte:
<style type="text/css" media="screen" title="Estilo criado para a página">
* { margin: 0; padding: 0; }
ol { background: #F3F3F3; padding: 10px; border-left: 5px solid #CCCCCC; margin-bottom: 30px; }
div#abas { width:600px;font-size: 90%;margin: 20px auto; }
div#abas ul { float: right; background: #ededed; width: 600px; padding-top: 4px; }
div#abas li { margin-left: 8px; list-style: none; }
* html #abas li { display: inline; /* Corrige um erro do IE */ }
div#abas li, #abas li a { float: left; }
div#abas ul li a { text-decoration: none; padding: 8px; color: #666; font-weight: bold; }
div#abas ul li.ativo { background: #e1e1e1; }
div#abas ul li.ativo a { color: #303030; }
div#abas div { background: #e1e1e1; clear: both;padding: 20px; min-height: 100px; }
div#abas div h3 { text-transform: uppercase; margin-bottom: 10px; letter-spacing: 1px; }
div#abas div p { line-height: 150%; }
div.footer { position: absolute; bottom:0px; width: 95%; height:30px; padding: 15px 2%; border-top:1px solid #e1e1e1;}
</style>
Ele ficou um pouquinho maior comparado ao do artigo anterior, e dentro do corpo da página[body] entra o seguinte HTML:
<div id="abas"> <ul> <li><a href="#aba-1">Aba Um</a></li> <li><a href="#aba-2">Aba Dois</a></li> <li><a href="#aba-3">Aba Três</a></li> <li><a href="#aba-4">Aba Quatro</a></li> </ul> <div id="aba-1"> <p>Esta é a primeira aba</p> </div> <div id="aba-2"> <p>Esta é a segunda aba</p> </div> <div id="aba-3"> <p>Esta é a terceira aba</p> </div> <div id="aba-4"> <p>Esta é a quarta aba</p> </div> </div>
Este também ficou um pouco maior, mas agora vamos a parte que realmente nos interessa, o jQuery usado é o seguinte:
<script type="text/javascript">
$(document).ready(function(){
$('#abas div').hide();
$('#abas div:first').show();
$('#abas ul li:first').addClass('ativo');
$('#abas ul li a').click(function(){
$('#abas ul li').removeClass('ativo');
$(this).parent().addClass('ativo');
var abaAtual= $(this).attr('href');
$('#abas div').hide();
$(abaAtual).show();
return false;
});
});
</script>
Bom o código começa especificando que todos os elementos que casem com #abas div devem sumir, e logo abaixo manda o apenas o primeiro aparecer[#abas div:first]. Até ai fizemos sumir todas as caixas e apenas 1 aparecer.
Agora faremos o primeiro elemento dos botões[#abas ul li:first] ficar com a classe ativo.
Abaixo iremos criar uma função que ao clique[click] começa retirando da primeira aba a classe ativo, e abaixo iremos fazer com que o elemento que foi clicado[this] tenha atribuído a ele a classe ativo.
Bom agora vem a parte que ira fazer a mágica deste código, onde uma variável[abaAtual] receba o valor que será definido pelo parâmetro href do elemento a do botão das abas, que no nosso caso deve combinar com o parâmetro id do elemento div, repare que #aba-1 do a combina com #aba-1 do div.
Então abaixo vem um código que ira esconder novamente os elementos #abas div e logo depois temos o código que deve mostrar ao usuário o conteúdo da aba em que ele clicou.
Logicamente quando for clicado no elemento a com o parâmetro href igual a #aba-1 o elemento div de parâmetro id igual a #aba-1 será mostrado, não importando a ordem em que tais aparecem.
Só para lembrar que no final aquele return false; é para que nenhuma variavel ali usada seja levada para fora desta função.
Bom então em resumo fizemos com esse código, um pequeno sistema de abas.
Após feito tudo isso vocês podem salvar o arquivo editado e ver como ficou, ou ver um exemplo de como irá ficar após de tudo feito corretamente.
Vocês também podem acessar o site oficial do jQuery e ler um pouco da documentação, que é muito completa e ajuda muito.
Códigos usados:
Qualquer tipo de dúvida relacionada ao artigo, pode e deve ser colocada nos comentários para que eu possa te ajudar.
One Ping to “Curso de jQuery – Junte o útil ao agradável – Parte 5”
10 Responses to “Curso de jQuery – Junte o útil ao agradável – Parte 5”
-
1. Digogs Says:
julho 15th, 2009 at 6:14 pmMuito legal, não estava acompanhando não, já venho utilizando em meu blog, pouco mais utilizo mais do que o java… Agora vou ler todos.
-
2. Gustavo Bordoni Says:
julho 15th, 2009 at 6:25 pmDigogs, pretendo daqui para frente fazer sobre vários plugins interessantes que existem na internet, mas explicando exatamente o que cada coisa faz.
-
3. wellington Says:
julho 15th, 2009 at 6:41 pmmuito bom suas dicas jquery
-
4. joao vitor Says:
julho 16th, 2009 at 12:36 amNão entendo muito sobre isso mais estudar isso mais a fundo!!!
-
5. Rafael Zorzi Says:
julho 16th, 2009 at 9:23 amainda não tipo tempo de estudar, pq to sem internet em casa…
akino trampo, só consigo comentar…
-
6. Julio Cezar Says:
outubro 4th, 2009 at 11:35 pmO tutorial esta muito legal, parabens peça iniciativa!!, agora tenho uma duvida:
Neste trecho “$(this).parent().addClass(’ativo’);” porque o uso do “.parent()” nao entendi muito bem este trecho do código.
obg!Gustavo Bordoni Respondeu:
dezembro 7th, 2009 em 5:24 pm@Julio Cezar:
Olá Cara, é o seguinte este.parent(), é para que ao invéz de pegar o elemento que está classificado comothisele pegue o anterior, da seguinte forma:<ul> <li><a href="#">Clicar</a></li> </ul>
Agora imagine que você tivesse um código que quando clicar no elemento
a, ele deveria adicionar uma classe ao elemento. Então você usaria o seguinte código:$('ul li a').click(function(){ $(this).addClass('classe'); return false; });Agora você precisa que a classe seja adicionada ao elemento que envolve o
a, então você usa:$('ul li a').click(function(){ $(this).parent().addClass('classe'); return false; }); -
7. Edvania Says:
janeiro 8th, 2010 at 5:33 pmParabéns pelas aulas. É meu primeiro contato com Jquery, e tenho uma dúvida.
As páginas estão representas em cada aba certo,então todas as páginas precisam ser criadas num só arquivo?
Desde já Obrigada -
8. Flávio Says:
fevereiro 17th, 2010 at 10:38 ammuito bom mesmo vlw ai, estão de parabéns! espero que continue postando mais abração
-
9. Flávio Says:
fevereiro 18th, 2010 at 9:23 amGustavo estou com uma dúvida.
tentei colocar uma div dentro da aba-1, o que acontece é que ela fica desabilitada. já tentei fazer aparecer mais ñ consigo poderia passar um dica ok.. aguardo resposta





































agosto 12th, 2009 at 10:00 pm
[...] Criando um sistema de Abas [...]