CSS Grid - Aula de CSS

⬅ Voltar ao Hub

O que é o CSS Grid?

O CSS Grid é um sistema de layout bidimensional que permite criar layouts complexos organizando elementos em linhas e colunas simultaneamente.

É ideal para:

Conceitos Básicos

1. Grid Container

O elemento pai que possui display: grid; Define a estrutura do grid.

2. Grid Items

Os elementos filhos diretos do grid container. São posicionados nas células do grid.

3. Grid Lines (Linhas)

As linhas que dividem o grid. Numeradas a partir de 1.

4. Grid Tracks

O espaço entre duas linhas adjacentes. Podem ser linhas ou colunas.

5. Grid Cells (Células)

A intersecção entre uma linha e uma coluna. O menor espaço no grid.

6. Grid Areas (Áreas)

Um ou mais células agrupadas. Podem ter nomes para facilitar o posicionamento.

Criando um Grid Básico

Primeiro, definimos as colunas e linhas do grid:

1
2
3
4
5
6

.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr; /* 3 colunas iguais */
  grid-template-rows: 100px 100px;    /* 2 linhas de 100px */
  gap: 10px;
}
        

Unidades de Medida no Grid

fr (fraction)

Representa uma fração do espaço disponível:

1fr
2fr
1fr
grid-template-columns: 1fr 2fr 1fr;

Valores Fixos e Auto

Podemos misturar diferentes unidades:

200px
auto
1fr
grid-template-columns: 200px auto 1fr;

repeat()

Função para repetir padrões:

1
2
3
4
grid-template-columns: repeat(4, 1fr);

Posicionamento de Itens

Por Números de Linha

Podemos posicionar itens especificando linhas de início e fim:

Item Expandido
2
3
4

.item-span {
  grid-column: 1 / 3;  /* Da coluna 1 à 3 */
  grid-row: 1 / 3;     /* Da linha 1 à 3 */
}
        

Usando span

Especifica quantas células ocupar:

Span 2
2
3
4
5
grid-column: span 2; /* Ocupa 2 colunas */

Grid Template Areas

Uma forma visual e intuitiva de definir layouts:

Header
Main Content
Footer

.grid-container {
  display: grid;
  grid-template-areas:
    "header header header"
    "nav    main   aside"
    "footer footer footer";
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: 60px 1fr 60px;
}

.header { grid-area: header; }
.nav    { grid-area: nav; }
.main   { grid-area: main; }
.aside  { grid-area: aside; }
.footer { grid-area: footer; }
        

Grid Responsivo

Usando auto-fit e minmax() para layouts adaptativos:

Card 1
Card 2
Card 3
Card 4
Card 5
Card 6
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

Alinhamento no Grid

Alinhamento do Container

1
2
3
4
justify-items: center; align-items: center;

Alinhamento Individual

1
2 (center)
3 (end)
4
justify-self: center; align-self: end;

🧩 Área de Testes

Altere as classes abaixo no arquivo grid.css para experimentar com diferentes propriedades do CSS Grid.

Item 1
Item 2
Item 3
Item 4
Item 5
Item 6