post
Código JavaScript para Criar Tabs Customizadas com Widget Button + Container no Elementor
Publicado em: 19/02/2024 / Atualizado em: 19/02/2024
Se você quer criar um sistema de Tabs customizadas no Elementor, para não ficar preso a solução do widget padrão (tabs) do Elementor, segue abaixo uma solução inovadora, que pode te ajudar muito.
Basicamente, você vai trazer um container onde vai ficar os botões, e outro container, para ser o principal dos demais container dentro dele. A estrutura ficará mais ou menos assim:
Acima temos o container “Botões Cursos (Tabs)” e logo em seguida o container “Curso #1 (Tabs)“, onde fica os outros container de seções customizadas da página.
No primeiro botão, adicione o ID btn-openss-1
e a CLASS btn-ativo
, assim, este botão ficará com a apareceria de ativo (você pode customizar o CSS dele depois).
Para os próximos botões, apenas adicione o ID btn-openss
com a sequencia numérica adequada. Ex: btn-openss-2
, btn-openss-3
, assim por diante, quantos botões e seções quiser criar. Como mostra abaixo:
Agora que nossos botões estão funcionando perfeitamente, precisamos atribuir um conteúdo para eles exibirem ou ocultarem. Para isso, adicione no seu container “pai”, o ID div-openss-1
, assim ele vai ser referenciado ao botão btn-openss-1
automaticamente. Veja abaixo:
Para os outros containers, você precisa adicionar uma CLASS hidden, para que eles fiquem ocultos, e somente apareça quando o respectivo botão atribuído a eles for clicado. Veja:
Sua estrutura ficará mais ou menos assim:
Agora, você precisa adicionar o código customizado (JS + CSS) que vai fazer a mágica acontecer. Segue código abaixo:
<style> .hidden { display: none; } .btn-ativo a { border: 2px solid #F60 !important; background: #E85320 !important; } </style> <script> document.addEventListener('DOMContentLoaded', function() { // Função para mostrar uma div, esconder as outras, atualizar o botão ativo e rolar suavemente até a div function showDiv(targetDivId, event) { event.preventDefault(); // Previne o comportamento padrão do link // Seleciona todas as divs que devem ser controladas var divs = document.querySelectorAll('[id^="div-openss-"]'); // Seleciona todos os contêineres de botão var buttonContainers = document.querySelectorAll('.elementor-widget-button[id^="btn-openss-"]'); divs.forEach(function(div) { if (div.id === targetDivId) { div.classList.remove('hidden'); // Aguarda até que a mudança de visibilidade seja aplicada setTimeout(() => { div.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 0); } else { div.classList.add('hidden'); } }); buttonContainers.forEach(function(container) { if (container.id === 'btn-openss-' + targetDivId.split('-')[2]) { container.classList.add('btn-ativo'); } else { container.classList.remove('btn-ativo'); } }); } // Adiciona o ouvinte de eventos a cada link dentro dos contêineres de botão document.querySelectorAll('.elementor-widget-button[id^="btn-openss-"] .elementor-button-link').forEach(function(button, index) { button.addEventListener('click', function(event) { // O ID do botão é baseado no contêiner, não no link diretamente var buttonContainerId = button.closest('.elementor-widget-button').id; // Constrói o ID da div correspondente com base no índice do botão var targetDivId = 'div-openss-' + (index + 1).toString(); showDiv(targetDivId, event); }); }); }); </script> <script> jQuery(document).ready(function() { jQuery('a[href="#"]').click(function(e) { e.preventDefault(); }); }); </script>
Neste exemplo, eu adicionei ele dentro do widget HTML do Elementor, na página mesmo, segue abaixo:
Assim, eu sei que esse código se refere apenas esta seção/página, mas é possível adicionar globalmente com o “adicionar código customizado” do Elementor PRO, ou outro plugin de código global.
Publicações recomendadas:
Inscreva-se em Nossa News:
Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.
Link Curto para Compartilhamento
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.
bruno.art.br/pb/4448
ID de Referência: 4448
Sugira uma publicação
Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.