Como fechar a navbar do Bootstrap depois de clicar?

-

Problema: Barra de Navegação Bootstrap Permanece Aberta Após Clique

A barra de navegação Bootstrap é um componente comum, mas pode permanecer aberta depois que um link é clicado em dispositivos móveis. Isso pode confundir os visitantes e bloquear a visualização do conteúdo da página. Fechar a barra de navegação automaticamente após um clique em um link melhoraria a experiência do usuário e a navegação no site.

Soluções para Fechar a Navbar do Bootstrap

Usando Listeners de Eventos JavaScript

Para fechar a navbar do Bootstrap após clicar em um link, você pode adicionar listeners de eventos de clique aos links da navbar. Este método usa JavaScript para detectar quando um link é clicado e então fecha a navbar.

Aqui está um trecho de código que mostra essa abordagem:

const navLinks = document.querySelectorAll('.nav-item')
const menuToggle = document.getElementById('navbarSupportedContent')
const bsCollapse = bootstrap.Collapse.getOrCreateInstance(menuToggle, {toggle: false})
navLinks.forEach((l) => {
    if (menuToggle.classList.contains('show')) {
        l.addEventListener('click', () => { 
            bsCollapse.toggle() 
        })
    }
})

Este código seleciona todos os links da navbar, adiciona um listener de evento de clique a cada um, e alterna o colapso da navbar quando um link é clicado. O método bootstrap.Collapse.getOrCreateInstance() controla o comportamento de colapso da navbar.

Dica: Prevenindo o Comportamento Padrão

Para prevenir o comportamento padrão do link (por exemplo, navegar para uma nova página) ao fechar a navbar, você pode adicionar event.preventDefault() ao seu manipulador de eventos de clique:

l.addEventListener('click', (event) => {
    event.preventDefault();
    bsCollapse.toggle();
})

Isso pode ser útil se você quiser fechar a navbar antes de navegar para a nova página ou se estiver usando roteamento de aplicativo de página única.

Implementando Atributos de Dados

Outro método para fechar a navbar do Bootstrap após clicar em um link é usar os atributos de dados incorporados do Bootstrap. Esta abordagem não precisa de JavaScript e usa a funcionalidade própria do Bootstrap.

Para usar este método, adicione data-bs-toggle="collapse" e data-bs-target=".navbar-collapse.show" a cada link da navbar:

<ul class="navbar-nav me-auto">
    <li class="nav-item active">
        <a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Início</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Link</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Outro Link</a>
    </li>
</ul>

Esses atributos de dados informam ao Bootstrap para alternar o estado de colapso da navbar quando um link é clicado. O seletor .navbar-collapse.show direciona a navbar aberta, fechando-a quando um link é selecionado.

Ambos os métodos melhoram a experiência do usuário em dispositivos móveis ao fechar a navbar após um link ser clicado.