Nenhum produto encontrado nessa seleção.
Menu em abas (ou blocos com abas) são bastante úteis para o seu layout. Com eles é possível dividir seu conteúdo por categoria, deixar o layout mais limpo e aprimorar a experiência do usuário em seu site.
Criar o menu em abas é ainda mais simples. Com um pouco de HTML, CSS e uma ajudinha do jQuery, serão apenas algumas linhas de código até você atingir o objetivo.
Veja um exemplo do que vamos criar neste tutorial:
Então vamos lá.
Código completo
Primeiramente, vou exibir o código completo, depois explico tudo em blocos.
O HTML:
<div class="content"> <div class="tabs-content"> <div class="tabs-menu clearfix"> <ul> <li><a class="active-tab-menu" href="#" data-tab="tab1">Lorem</a></li> <li><a href="#" data-tab="tab2">Ipsum</a></li> <li><a href="#" data-tab="tab3">Dolor</a></li> </ul> </div> <!-- tabs-menu --> <div class="tab1 tabs first-tab"> Conteúdo da aba 1 </div> <!-- .tab1 --> <div class="tab2 tabs"> Conteúdo da aba 2 </div> <!-- .tab2 --> <div class="tab3 tabs"> Conteúdo da aba 3 </div> <!-- .tab3 --> </div> <!-- .tabs --> </div> <!-- .content -->
O CSS:
/* Geral */ * { margin: 0; padding: 0; box-sizing: border-box; font-size: 12px; line-height: 1.5; } body { background: #222222; } a:focus { outline: none; } .content { margin: 30px; } .clearfix:after { content: '.'; height: 0; font-size: 0; line-height: 0; display: block; clear: both; overflow: hidden; visibility: hidden; } /* Abas */ .tabs-content { background: #eee; font-family: sans-serif; } /* Menu das abas */ .tabs-menu { background: #0074a2; } .tabs-menu ul { list-style: none; } .tabs-menu ul li { float: left; } .tabs-menu ul li a { display: block; padding: 10px 20px; text-decoration: none; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #fff; } .tabs-menu ul li a.active-tab-menu { background: #eee; color: #000; } /* Conteúdo das abas */ .tabs { display: none; padding: 30px; } .first-tab { display: block; }
O jQuery:
jQuery(function($){ $('.tabs-menu ul li a').click(function(){ var a = $(this); var active_tab_class = 'active-tab-menu'; var the_tab = '.' + a.attr('data-tab'); $('.tabs-menu ul li a').removeClass(active_tab_class); a.addClass(active_tab_class); $('.tabs-content .tabs').css({ 'display' : 'none' }); $(the_tab).show(); return false; }); });
Vamos aos detalhes.
Explicação detalhada
Agora vou detalhar o que cada uma das partes do nosso código faz.
O HTML:
O elemento com classe “content” não faz nada em específico, é apenas um div que contém todo o nosso HTML.
<div class="content"> </div> <!-- .content -->
As tags “tabs-content” são o conteúdo das abas, portanto, podemos configurar uma cor de fundo, fonte e coisas do tipo utilizando CSS.
<div class="content"> <div class="tabs-content"> </div> <!-- .tabs --> </div> <!-- .content -->
Os elementos “tabs-menu” será o menu das abas:
<div class="tabs-menu clearfix"> <ul> <li><a class="active-tab-menu" href="#" data-tab="tab1">Lorem</a></li> <li><a href="#" data-tab="tab2">Ipsum</a></li> <li><a href="#" data-tab="tab3">Dolor</a></li> </ul> </div> <!-- tabs-menu -->
A opção “data-tab” dos links indicará a classe da aba a ser exibida pelo jQuery.
As abas podem ter duas ou três classes, são elas:
- classe-da-aba – A classe que você escolher para sua aba
- tabs – Classe padrão de abas
- first-tab – A tag que será exibida por padrão
<div class="tab1 tabs first-tab"> </div>
O CSS
O CSS das abas é relativamente bem simples.
Configuramos a cor de fundo e a fonte:
/* Abas */ .tabs-content { background: #eee; font-family: sans-serif; }
O menu das abas:
/* Menu das abas */ .tabs-menu { background: #0074a2; } .tabs-menu ul { list-style: none; } .tabs-menu ul li { float: left; } .tabs-menu ul li a { display: block; padding: 10px 20px; text-decoration: none; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #fff; } .tabs-menu ul li a.active-tab-menu { background: #eee; color: #000; }
Este é um menu como qualquer outro. A classe active-tab-menu será ativada pelo jQuery.
Depois ocultamos todas as abas e mostramos apenas a principal:
/* Conteúdo das abas */ .tabs { display: none; padding: 30px; } .first-tab { display: block; }
O jQuery:
O jQuery faz o seguinte (veja nos comentários):
// Inicia o jQuery jQuery(function($){ // Captura o clique no link do menu das abas $('.tabs-menu ul li a').click(function(){ /** Variáveis **/ // Configura o link clicado var a = $(this); // A classe da aba ativa var active_tab_class = 'active-tab-menu'; // Captura o atributo data-tab e gera uma classe var the_tab = '.' + a.attr('data-tab'); // Remove a classe de aba ativa de todas as abas $('.tabs-menu ul li a').removeClass(active_tab_class); // Adiciona a classe de aba ativa apenas no link clicado a.addClass(active_tab_class); // Adiciona um CSS para ocultar todas as abas $('.tabs-content .tabs').css({ 'display' : 'none' }); // Mostra apenas a aba que queremos $(the_tab).show(); // Não deixa o navegador atualizar a página return false; }); });
Veja uma demonstração aqui.
Em caso de dúvidas, basta perguntar.