Há um componente chamado NavBar que permite criar menu no Bootstrap. Esse menu fica responsivo e bastante personalizável em seu site.
O componente NavBar é importante porque fornece uma navegação fácil e intuitiva para os usuários em um site. Suas vantagens incluem a capacidade de ser responsivo, se adaptando a diferentes dispositivos, além de oferecer opções de personalização para se adequar ao design do site.
Vamos ver como criar um menu no Bootstrap com o componente NavBar.
Links CDN
CDN são servidores na internet que disponibilizam conteúdo através de links. Nesse caso, o conteúdo são os pacotes para JQuery, CSS e bootstrap.
A primeira coisa a se fazer é adicionar em nosso HTML os links CDNs ou baixá-los para nosso pc. Usar apenas o link é muito mais fácil.
Coloquei dentro da entre as tags <head> e </head> as linhas abaixo:
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
Esses links podem ser pegos de outros servidores CDNs, conforme você desejar.
Classes NavBar do BootStrap para Criação de Menus
Apenas para referência:
- navbar: Define o contêiner principal da barra de navegação. Pode ser aplicada à maioria dos elementos, mas uma âncora funciona melhor, pois alguns elementos podem exigir classes utilitárias ou estilos personalizados.
- navbar-expand: Controla o comportamento responsivo da barra de navegação, permitindo que ela seja expandida em dispositivos móveis.
- navbar-light (ou navbar-dark): Define o esquema de cores da barra de navegação como claro (light) ou escuro (dark).
- .navbar-toggler: para uso com o plugin do Bootstrap de recolhimento e outros comportamentos de alternância de navegação.
- .navbar-text: para adicionar strings de texto centralizadas verticalmente.
- .collapse.navbar-collapse para agrupar e ocultar o conteúdo da barra de navegação por um ponto de interrupção pai.
- bg-light (ou bg-dark): Define o esquema de cores de fundo da barra de navegação como claro (light) ou escuro (dark).
- navbar-nav: Define o contêiner dos itens da barra de navegação. É usado para uma navegação leve e completa, incluindo suporte para menus suspensos.
- nav-item: Define um item individual na barra de navegação.
- nav-link: Define um link dentro de um item da barra de navegação.
- navbar-expand: Controla o comportamento responsivo da barra de navegação, permitindo que ela seja expandida em dispositivos móveis.
- navbar-brand: Define uma marca (logo ou texto) da barra de navegação. Pode usar para o nome da sua empresa, produto ou projeto.
- .navbar-scroll pode ser opcionalmente usado para definir um
max-height
e scroll expanded navbar content
Criando Menu com NavBar
01 criando o NavBar
Bootstrap é um framework CSS que usa contêiner(espaços). Os dois principais contêineres são .container e .container-fluid. Falamos sobre contêineres nesses posts: Coisas Importantes do Bootstrap para Iniciantes e Sistema de Grades no Bootstrap – ou Grid
Mas, resumindo:
- .container cria um contêiner responsivo e de largura fixa.
- .container-fluid sempre pegará toda a largura da tela. A largura é sempre 100%.
Dentro do corpo <body> e </body> do seu HTML
Usarei a classe .cointainer e dentro dele colocaremos as classes <nav class=”navbar”> </nav> – Também usarei a classe p-4 para incluir um espaço a redor.
<div class="container p-4"> <nav class="navbar"> </nav> </div>
Apenas com essas classes você não conseguirá ver nada ainda. Vamos adicionar uma cor de fundo para vermos o NavBar aparecer. Acrescente a classe bg-dark. Sobre cores, veja nosso post Cor e Tamanho de Texto com Bootstrap
<div class="container p-4"> <nav class="navbar bg-dark"> </nav> </div>
Agora um retângulo preto aparecerá:
02 adicionando um brand ao NavBar
Como vimos acima, podemos colocar um navbar-brand que é a marca (logo ou texto) da barra de navegação. Podemos colocar um texto simples ou uma imagem.
Antes, vamos adicionar um .container-fluid e dentro dele o nosso .nav-brand. O “text-info” é apenas para deixar o texto azul.
<div class="container p-4"> <nav class="navbar bg-dark"> <div class="container-fluid"> <a hred="#" class="navbar-brand text-info" >Categoria Outros </a> </div> </nav> </div>
Teremos o seguinte resultado,
Categoria Outros
#3 adicionando um botão ao nosso NavBar
Agora iremos adicionar um botão dentro do nosso NavBar. Ele irá servir para expandir o menu.
Esse botão é de expansão. Quando a janela for pequena, como em celulares, o conteúdo do menu ficará ocultado e será exibido quando clicarmos no botão de expansão.
Iremos adicionar a tag <button> com as seguintes classes dentro:
- data-bs-toggle=”collapse”: Indica que o elemento é responsável por alternar a visibilidade de um conteúdo colapsável.
- data-bs-target=”#navbarNav”: Especifica o seletor do elemento que será colapsado/expandindo ao ser acionado.
- aria-controls=”navbarNav”: Define o ID do elemento que é controlado pelo botão de toggle.
- aria-expanded=”false”: Indica se o conteúdo controlado está inicialmente expandido ou colapsado (nesse caso, colapsado).
- aria-label=”Toggle navigation”: Fornece um rótulo acessível para a função de toggle de navegação.
Adicionei a linha do botão:
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation" >....</botton>
e dentro um span com o botão a ser exibido.
<span class="navbar-toggler-icon"></span>
Veja como ficaram o código e o resultado. Ah, acabei alterado a cor de fundo preta para um cinza através da classe bg-secondary que substituiu a bg-dark
<div class="container p-4"> <nav class="navbar bg-secondary"> <div class="container-fluid"> <a hred="#" class="navbar-brand text-info" >Categoria Outros </a> <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> </div> </nav> </div>
04 Inserindo links no NavBar
Colocamos um logotipo em texto, que poderia ser uma imagem, e um botão de expansão; agora iremos criar os links do menu. Podemos colocar qualquer coisa, desde textos, botões, campos de formulários…
Podemos criar links através de listas
Todo o código fica assim,
<div class="container p-4"> <nav class="navbar bg-secondary"> <div class="container-fluid"> <a hred="#" class="navbar-brand text-info" >Categoria Outros </a> <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Funções</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Preço</a> </li> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a> </li> </ul> </div> </div> </nav> </div>
Outros Exemplos do que podemos colocar dentro do NavBar
Esses exemplos foram pegos da documentação do Bootstrap 5.
EXEMPLO 01
<div class="container p-4"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdown"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a> </li> </ul> <form class="d-flex"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> </div> </div> </nav> </div>
EXEMPLO 02 – IMAGEM COMO BRAND
<div class="container p-4"> <nav class="navbar navbar-light bg-light"> <div class="container"> <a class="navbar-brand" href="#"> <img src="/docs/5.0/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24"> </a> </div> </nav> </div>
EXEMPLO 03 – IMAGEM E TEXTO COMO BRAND
<div class="container p-4"> <nav class="navbar navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#"> <img src="/docs/5.0/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24" class="d-inline-block align-text-top"> Bootstrap </a> </div> </nav> </div>
EXEMPLO 04
<div class="container p-4"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavDropdown"> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> </ul> </li> </ul> </div> </div> </nav> </div>
EXEMPLO 05 – COM FORMULÁRIO
<div class="container p-4"> <nav class="navbar navbar-light bg-light"> <div class="container-fluid"> <form class="d-flex"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> </div> </nav> </div>
outro semelhante
<div class="container p-4"> <nav class="navbar navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand">Navbar</a> <form class="d-flex"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> </div> </nav> </div>
mais outro semelhante
<nav class="navbar navbar-light bg-light"> <form class="container-fluid"> <div class="input-group"> <span class="input-group-text" id="basic-addon1">@</span> <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1"> </div> </form> </nav> </div>
EXEMPLO 06 – BOTÕES
<div class="container p-4"> <nav class="navbar navbar-light bg-light"> <form class="container-fluid justify-content-start"> <button class="btn btn-outline-success me-2" type="button">Main button</button> <button class="btn btn-sm btn-outline-secondary" type="button">Smaller button</button> </form> </nav> </div>
EXEMPLO 07
<div class="container p-4"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <a class="navbar-brand" href="#">Navbar w/ text</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarText"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> </ul> <span class="navbar-text"> Navbar text with an inline element </span> </div> </div> </nav> </div>
Oi. Percebi que o menu fica oculto mesmo no monitor do computador.