Bootstrap: Contêineres de Layout

Última atualização: 2026-08-26

1. Introdução

(1) Pré-requisitos

(2) 🎯 Objetivos de Aprendizagem


(3) Ponto de Dor

Bob acabou de terminar de aprender HTML básico. Ele percebe que a mesma página tem margens esquerda e direita inconsistentes em diferentes larguras de tela—às vezes gruda na borda, às vezes há muito espaço em branco.

(4) Solução

Os contêineres do Bootstrap foram criados para resolver esse problema. Os contêineres são a base do sistema de grade do Bootstrap. Todo o conteúdo deve ser colocado dentro de um contêiner, pois os contêineres fornecem alinhamento e padding adequados.

Entendendo: Um contêiner é como uma moldura de quadro—ele determina a largura e as margens da área de conteúdo, deixando o conteúdo organizado e limpo em "paredes" de diferentes tamanhos.

(5) Benefícios

Depois de usar contêineres, Bob não precisa mais se preocupar com problemas de margem em telas diferentes—os contêineres do Bootstrap fornecem automaticamente alinhamento e padding adequados, mantendo o conteúdo centralizado e arrumado em qualquer tamanho de tela.


2. O que são Contêineres

As funções principais de um contêiner são centralizar e limitar a largura. O Bootstrap tem três tipos de contêiner:

Contêiner Comportamento Caso de Uso Típico
.container Largura fixa em cada breakpoint, salta entre breakpoints Área de conteúdo padrão
.container-fluid Sempre width: 100% Seções de largura total (barra de navegação, banner)
.container-{breakpoint} 100% antes do breakpoint especificado, fixo depois Controle responsivo refinado

(1) Comparação dos Três Contêineres

HTML
<div class="container">.container - largura responsiva fixa</div>
<div class="container-fluid">.container-fluid - sempre 100% de largura</div>
<div class="container-md">.container-md - 100% abaixo de md, fixo acima</div>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.



3. .container

.container é o tipo de contêiner mais usado. Ele tem larguras máximas predefinidas em cada breakpoint:

Breakpoint Sufixo de Classe Largura de Tela >= Largura de .container
xs (Telefone Retrato) Nenhum 0 100% (sem valor fixo)
sm (Telefone Paisagem) -sm 576px 540px
md (Tablet) -md 768px 720px
lg (Desktop) -lg 992px 960px
xl (Tela Grande) -xl 1200px 1140px
xxl (Extra Grande) -xxl 1400px 1320px

▶ Exemplo: Demonstração de Largura de .container

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Demonstração de Contêiner</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <style>
    .demo-box { background: #f8f9fa; border: 2px solid #0d6efd; padding: 1rem; text-align: center; }
  </style>
</head>
<body>
  <div class="container demo-box">
    Este é um .container<br>
    Redimensione o navegador para ver sua largura mudar em cada breakpoint.
  </div>
</body>
</html>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.



4. .container-fluid

.container-fluid mantém sempre 100% de largura, retendo apenas o padding esquerdo e direito (padrão padding: 0 12px):

HTML
<div class="container-fluid bg-dark text-white py-3">
  Banner de largura total - se estende de borda a borda
</div>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default. Nota: container-fluid não fica rente às bordas da viewport—ainda tem cerca de 24px de padding (12px de cada lado). Se precisar de largura total verdadeira (edge-to-edge), combine com .p-0 ou estilos customizados.



5. .container-{breakpoint}

.container-{breakpoint} é um recurso adicionado no Bootstrap 5: comporta-se como 100% de largura no e abaixo do breakpoint especificado, e muda para largura fixa acima do breakpoint.

▶ Exemplo: Comparação de Contêiner Responsivo por Breakpoint

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Demonstração de Contêiner por Breakpoint</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <style>
    .demo-box { border: 2px solid #198754; padding: 1rem; margin-top: 1rem; text-align: center; }
  </style>
</head>
<body>
  <div class="container-md demo-box">
    .container-md - largura total no mobile, fixo no tablet e acima
  </div>
  <div class="container-lg demo-box" style="border-color: #dc3545;">
    .container-lg - largura total no tablet, fixo no desktop e acima
  </div>
</body>
</html>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default. Uso típico:



6. Contêineres Aninhados

Contêineres podem ser aninhados, mas observe que contêineres aninhados herdam o padding do pai, fazendo a área de conteúdo ficar mais estreita:

HTML
<div class="container" style="border: 2px solid #0d6efd; padding: 1rem;">
  <p>Contêiner externo (azul)</p>
  <div class="container" style="border: 2px solid #198754; padding: 1rem;">
    <p>Contêiner aninhado (verde) - mais estreito em cerca de 24px de cada lado</p>
  </div>
</div>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default. Recomendação: Aninhar contêineres é desnecessário na maioria dos cenários. Se precisar criar colunas dentro de um contêiner, use .row + .col-* (abordado na próxima lição) em vez de aninhar outro contêiner.



7. Mecanismo de Padding do Contêiner

Contêineres têm padding-left: 12px e padding-right: 12px por padrão. Esse espaçamento é consistente com a largura do gutter do sistema de grade, garantindo o alinhamento do conteúdo dentro das colunas dentro do contêiner:

100%
graph LR
    A[Borda do Navegador] -->|12px padding| B[Conteúdo do Contêiner]
    B -->|12px padding| C[Borda do Navegador]
    style A fill:#eee,stroke:#999
    style C fill:#eee,stroke:#999
    style B fill:#0d6efd,color:#fff

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.

Propriedade do Contêiner Valor Descrição
padding-left 12px Padding esquerdo
padding-right 12px Padding direito
margin-left auto Centralização horizontal
margin-right auto Centralização horizontal

(1) Comparação Padding vs. Margin

Propriedade Exemplo de Classe Efeito Cenário de Aplicação
Padding px-3 Recua o conteúdo do contêiner para o centro Evita que o conteúdo encoste nas bordas
Margin mx-auto Centraliza o contêiner dentro do pai Centralizar contêiner horizontalmente
Combinação px-3 mx-auto Contêiner centralizado e conteúdo não rente às bordas Área de conteúdo padrão



8. Exemplos de Combinação de Contêineres

▶ Exemplo: Barra de Navegação de Largura Total + Área de Conteúdo Centralizada

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Layout de Contêiner</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container-fluid bg-dark text-white py-3">
    <div class="container">
      <span class="fs-4">Marca</span>
    </div>
  </div>
  <div class="container my-4">
    <div class="row">
      <div class="col-8 bg-light p-3 border">Conteúdo Principal</div>
      <div class="col-4 bg-secondary text-white p-3">Barra Lateral</div>
    </div>
  </div>
  <div class="container-fluid bg-dark text-white py-3 mt-4">
    <div class="container text-center">&copy; 2026 Rodapé</div>
  </div>
</body>
</html>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.

▶ Exemplo: Layout Responsivo com Contêiner Aninhado

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Contêineres Aninhados</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <style>
    .outer { background: #e9ecef; padding: 1rem; }
    .inner { background: #0d6efd; color: #fff; padding: 1rem; }
  </style>
</head>
<body>
  <div class="container outer">
    <h6>Contêiner .container externo (área de borda azul)</h6>
    <div class="container-md inner">
      .container-md — dentro de .container<br>
      Largura total no mobile, fixo em md+
    </div>
  </div>
</body>
</html>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.

▶ Exemplo: Técnicas de Depuração de Largura de Contêiner

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Depurar Contêineres</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <style>
    .dbg { outline: 2px dashed #dc3545; padding: 0.5rem; margin: 1rem 0; }
  </style>
</head>
<body>
  <div class="container dbg">.container</div>
  <div class="container-sm dbg">.container-sm</div>
  <div class="container-md dbg">.container-md</div>
  <div class="container-lg dbg">.container-lg</div>
  <div class="container-xl dbg">.container-xl</div>
  <div class="container-xxl dbg">.container-xxl</div>
  <div class="container-fluid dbg">.container-fluid</div>
</body>
</html>
▶ Experimente

Output: Bootstrap 5.3 styled component effects (like buttons, cards, carousels, collapses, etc.). The page uses Bootstrap's default theme (light) and responsive grid by default.


❓ Perguntas Frequentes

P: As larguras fixas dos contêineres são hardcoded? Podem ser alteradas? R: Sim, você pode modificar os valores de largura máxima de cada breakpoint usando a variável Sass $container-max-widths. A personalização do Sass é abordada em detalhe na Fase 5.

P: .container e .container-fluid podem ser usados juntos? R: Sim. Uma abordagem comum é usar container-fluid para barras de navegação/banners de largura total e container para a área de conteúdo centralizada. Eles não entram em conflito.

P: Por que os contêineres não têm padding vertical? R: Os contêineres controlam apenas o centralizamento horizontal e a restrição de largura. O espaçamento vertical é controlado por classes utilitárias (como py-3, my-5) ou pelas margens dos elementos filhos, o que será abordado em uma lição posterior.

P: container-md tem a mesma largura que container no desktop? R: No breakpoint md e acima, container-md tem exatamente a mesma largura que container. A diferença está abaixo de md: container ainda tem valores de largura fixa (mas limitados pela viewport), enquanto container-md passa a 100% de largura. O mesmo se aplica a lg, xl e xxl.

P: Posso aninhar contêineres dentro de contêineres? Com o que devo me atentar? R: Sim, o aninhamento é possível, mas cada camada de contêiner adiciona 24px de padding esquerdo/direito, tornando a área de conteúdo real do contêiner interno mais estreita. Para evitar padding aditivo, você pode adicionar px-0 ao contêiner interno para remover o padding.


📖 Resumo


📝 Exercícios

  1. ⭐ Crie uma página que exiba os contêineres container, container-fluid e container-md lado a lado, diferenciados por bordas coloridas.
  2. ⭐⭐ Abra as ferramentas do desenvolvedor do navegador, redimensione a viewport para 540px, 720px, 960px e 1140px respectivamente, e observe se as mudanças de largura de .container correspondem aos valores predefinidos.
  3. ⭐⭐⭐ Escreva uma página com: uma barra de navegação .container-fluid escura no topo, uma área de conteúdo .container no meio, e um rodapé .container-fluid embaixo.

Lição Anterior: Bootstrap Introdução e Instalação · Próxima Lição: Tipografia

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%