Grid de 12 Colunas com Flexbox no Bootstrap 5 — Web Academy
O Sistema de Grid de 12 Colunas é a engrenagem visual mais consagrada da história do Bootstrap. Construído inteiramente sobre o módulo moderno do CSS Flexbox, ele divide a largura horizontal disponível em 12 frações virtuais de mesma proporção. Ao dominar a hierarquia estrutural composta por .container (o delimitador), .row (a linha flexível) e .col-* (as colunas), você adquire o superpoder de construir qualquer layout profissional — desde uma simples barra lateral com área de conteúdo até grades complexas de e-commerce e painéis SaaS — com alinhamento milimétrico e adaptação impecável em celulares, tablets e computadores.
📑 Índice do Conteúdo
A Tríade Sagrada do Grid: Container, Row e Col
Para que o sistema de grade funcione sem quebras matemáticas ou barras de rolagem horizontal indesejadas, você deve respeitar estritamente a relação de parentesco entre 3 elementos:
.container(ou.container-fluid): Fornece a largura delimitada e o respiro inicial com padding lateral de 12px de cada lado..row(A Linha): É um contêiner flexível configurado comdisplay: flexeflex-wrap: wrap. Sua característica técnica mais engenhosa é a aplicação de margens negativas (margin-left: -12pxemargin-right: -12px), que anulam exatamente o padding do container para que as colunas fiquem perfeitamente alinhadas com as margens da página..col-*(As Colunas): Devem ser filhas diretas imediatas da linha. Elas possuem padding horizontal de 12px para criar o espaçamento (gutter) entre os blocos e definem quantas das 12 frações aquele elemento ocupará.
Como Funciona a Matemática das 12 Frações
Em qualquer linha (.row), a soma das colunas ativas deve idealmente totalizar 12. Se a soma ultrapassar 12 (por exemplo, col-8 + col-6 = 14), o Bootstrap empurra automaticamente o elemento excedente para a linha seguinte (comportamento de quebra automática ou column wrapping).
- Auto-Layout (
.col): Se você não especificar nenhum número e colocar apenas a classe.col, o Bootstrap dividirá o espaço disponível igualmente entre todas as colunas irmãs (2 colunas ficam com 50% cada; 3 colunas ficam com 33.33% cada; 4 colunas ficam com 25% cada). - Larguras Proporcionais (
.col-1a.col-12): Permitem criar hierarquia visual, como um artigo ocupando.col-8(66.6%) e uma barra lateral ocupando.col-4(33.3%). - Auto-Width por Conteúdo (
.col-auto): Dimensiona a coluna estritamente com base na largura natural do seu conteúdo interno. - Colunas Responsivas por Breakpoint: Você pode combinar classes como
col-12 col-md-6 col-lg-4para que um card ocupe a tela cheia em celulares (12 colunas), metade da tela em tablets (6 colunas) e um terço da tela em desktops (4 colunas).
Demonstração Prática do Grid de 12 Colunas
Analise o exemplo a seguir, que ilustra os três cenários mais frequentes da arquitetura web: colunas de largura igual, layout assimétrico de duas colunas e centralização com deslocamento (offset):
<!-- Exemplo da Lição 04: Grade de 12 Colunas com Flexbox no Bootstrap 5 -->
<div class="container py-4">
<!-- CENÁRIO 1: Auto-Layout com Colunas de Mesma Largura (.col) -->
<h5 class="fw-bold text-primary mb-3">1. Auto-Layout Dividido Igualmente (.col)</h5>
<div class="row g-3 mb-4 text-center">
<div class="col">
<div class="p-3 bg-white border border-primary border-2 rounded-3 shadow-sm">
<span class="fw-bold">Coluna A</span><br><small class="text-muted">1 de 3 (33.3%)</small>
</div>
</div>
<div class="col">
<div class="p-3 bg-white border border-primary border-2 rounded-3 shadow-sm">
<span class="fw-bold">Coluna B</span><br><small class="text-muted">1 de 3 (33.3%)</small>
</div>
</div>
<div class="col">
<div class="p-3 bg-white border border-primary border-2 rounded-3 shadow-sm">
<span class="fw-bold">Coluna C</span><br><small class="text-muted">1 de 3 (33.3%)</small>
</div>
</div>
</div>
<!-- CENÁRIO 2: Proporção Clássica de Artigo (8 Colunas) + Sidebar (4 Colunas) -->
<h5 class="fw-bold text-primary mb-3">2. Layout Responsivo: Conteúdo (col-md-8) + Sidebar (col-md-4)</h5>
<div class="row g-3 mb-4">
<div class="col-12 col-md-8">
<div class="p-4 bg-white border rounded-4 shadow-sm h-100">
<span class="badge bg-primary mb-2">.col-12 .col-md-8</span>
<h4 class="fw-bold">Área de Conteúdo Principal</h4>
<p class="text-secondary small mb-0 leading-relaxed">
No mobile ocupa 100% da largura útil (12 colunas). A partir de tablets e computadores (breakpoint md: ≥768px),
ela trava em exatamente 8 das 12 frações da grade (66.66% da tela).
</p>
</div>
</div>
<div class="col-12 col-md-4">
<div class="p-4 bg-light border border-2 border-dashed rounded-4 h-100 text-center d-flex flex-column justify-content-center">
<span class="badge bg-secondary mb-2 mx-auto">.col-12 .col-md-4</span>
<h5 class="fw-bold mb-1">Barra Lateral</h5>
<small class="text-muted">Ocupa as 4 frações restantes (33.33%). 8 + 4 = 12 total.</small>
</div>
</div>
</div>
<!-- CENÁRIO 3: Deslocamento de Coluna com Offset (Centralização sem Elemento Fantasma) -->
<h5 class="fw-bold text-primary mb-3">3. Deslocamento com Offset (.col-md-6 .offset-md-3)</h5>
<div class="row">
<div class="col-12 col-md-6 offset-md-3 text-center">
<div class="p-4 bg-primary text-white rounded-4 shadow">
<h4 class="fw-bold mb-1">Card Perfeitamente Centralizado</h4>
<p class="text-white-50 small mb-0">
Com <code class="text-white bg-dark px-2 py-1 rounded">.offset-md-3</code>, a coluna de 6 frações é empurrada
3 frações para a direita: 3 (vazio) + 6 (card) + 3 (vazio) = 12 perfeito.
</p>
</div>
</div>
</div>
</div>
Anatomia das Classes do Grid System
Consulte a tabela técnica abaixo com o catálogo de classes fundamentais que controlam a linha, as colunas e os deslocamentos na grade:
| Classe / Sintaxe | Propósito Arquitetural | Exemplo de Uso |
|---|---|---|
.row |
Ativa o contêiner flexível de linha, habilita quebra (wrap) e aplica margens negativas (-12px). | <div class="row"> |
.col |
Auto-layout: divide o espaço horizontal restante em partes perfeitamente iguais entre as colunas irmãs. | <div class="col"> |
.col-{n} |
Define largura estática ocupando n das 12 frações em todas as resoluções (de 1 a 12). |
<div class="col-6"> (50%) |
.col-{bp}-{n} |
Define largura condicional a partir do breakpoint indicado (sm, md, lg, xl, xxl). |
<div class="col-md-4"> (33.3% em telas ≥768px) |
.col-auto |
Dimensiona a coluna estritamente pelo tamanho do seu conteúdo interno (texto, botão ou imagem). | <div class="col-auto"> |
.offset-{bp}-{n} |
Empurra a coluna n posições para a direita adicionando margem esquerda proporcional. |
<div class="col-md-6 offset-md-3"> |
.row-cols-{n} |
Atalho aplicado diretamente na .row para definir quantas colunas cabem por linha sem repetir classes nos filhos. |
<div class="row row-cols-1 row-cols-md-3"> |
A Regra dos Filhos Imediatos da .row
Nunca insira elementos com estilos de borda, sombra ou tags de texto (como <p>, <h2> ou <form>) diretamente como filhos imediatos de uma .row sem envolvê-los em uma coluna (.col ou .col-*). Como a classe .row possui margens negativas laterais de -12px, qualquer elemento que não seja uma coluna herdará essas margens negativas sem ter o padding compensatório, vazando para fora do container e gerando a temida barra de rolagem horizontal quebrada no mobile. A regra de ouro é: filho imediato de row é sempre col; o conteúdo estilizado vai sempre dentro da col!
Relação com Outras Ferramentas do Web-ZoneWare
Acelere a montagem e os testes dos seus layouts combinando esta lição com as soluções do portal:
- Playground Web IDE: teste combinações de colunas com auto-layout e redimensione o painel de preview para ver o momento exato em que as colunas quebram de linha.
- Gerador de Tabelas & Grids HTML/CSS: ideal para comparar layouts tabulares tradicionais com o poder moderno das grades responsivas em Flexbox.
- Lição 03: Containers & Breakpoints: revise os 6 pontos de quebra oficiais que ativam as classes
col-sm,col-md,col-lg,col-xlecol-xxl.
Documentações & Referências Oficiais
Aplique o que você aprendeu nesta lição
Utilize nossas ferramentas online gratuitas para experimentar os conceitos ou teste o código ao vivo no Playground IDE.
Editor de Códigos Web Online
Ambiente com destaque de sintaxe para você testar tags, tabelas e scripts na hora.
Abrir Ferramenta OnlinePlayground Web Online
Escreva seu código HTML, CSS ou JavaScript e veja o resultado renderizado ao vivo no navegador com zero configuração.
⚡ Codificar no Playground IDE