Este documento reúne os conhecimentos essenciais sobre Grid Layout adquiridos durante os estudos. Ele apresenta explicações diretas, exemplos de código e comparações práticas.
O layout CSS Grid (ou apenas "Grid") é um sistema bidimensional baseado em uma "grade" (grid em inglês), e isso o torna muito útil pois assim trabalhamos com um layout em linhas e colunas (rows e columns). O layout Grid consiste de um elemento pai (parent) com um ou mais elementos filhos (child elements), portanto, o elemento pai é um container, e os elementos filhos são items.
| CSS Grid | Flexbox |
|---|---|
| Bidimensional | Unidimensional |
| Alinha em linha e coluna | Alinha em linha ou coluna |
| Melhor para estruturas maiores | Melhor para componentes |
Definição de linhas e colunas de forma abreviada com grid-template.
.grid {
display: grid; /* Ativa o Grid */
grid-template: auto auto / auto auto; /* Grid Template */
}Essa declaração é o mesmo que:
.grid {
grid-template-rows: auto auto;
grid-template-columns: auto auto;
}Cria 2 linhas e 2 colunas com tamanhos automáticos, que se ajustam ao conteúdo.
Controla o espaçamento entre as células da grade, tanto em linhas row-gap: 10px quanto em colunas column-gap: 5px.
.grid {
gap: 10px 5px; /* Grid Gap */
}Define o tamanho das colunas geradas automaticamente.
.grid {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-auto-columns: 100px; /* Auto Columns */
}Define o tamanho das linhas geradas automaticamente.
.grid {
display: grid;
grid-template-columns: repeat(2, 100px);
grid-auto-rows: 100px; /* Auto Rows */
}Controla o fluxo automático dos itens (linha ou coluna).
.grid {
display: grid;
grid-template-columns: repeat(3, 200px);
grid-auto-flow: column; /* ou row - Auto Flow */
}Define onde o item começa e termina na coluna.
.grid-item {
grid-column: 2 / 5; /* Vai da coluna 2 até a 5 - Grid Column */
}Define onde o item começa e termina na linha.
.grid-item {
grid-row: 1 / 6; /* Vai da linha 1 até a 6 - Grid Row */
}Nomeia e posiciona áreas do grid.
.grid {
grid-template-areas:
"header header"
"nav body"
"nav footer";
} /* Grid Area */
.grid-item .header { grid-area: header; } /* Area Header */
.grid-item .nav { grid-area: nav; } /* Area Nav */
.grid-item .body { grid-area: body; } /* Area Body */
.grid-item .footer { grid-area: footer; } /* Area Footer */Adapta o layout para diferentes tamanhos de tela, garantindo uma boa experiência em dispositivos móveis.
@media screen and (max-width: 1024px) {
.grid {
grid-template-columns: 1fr !important;
grid-template-rows: 80px 50px 1fr 80px !important;
grid-template-areas:
"header"
"nav"
"body"
"footer" !important;
}
}O CSS Grid é essencial para qualquer dev moderno que quer criar layouts profissionais e responsivos. Com esses conceitos dominados, é possível criar desde pequenas interfaces até grandes sistemas com facilidade.
📆 Grid - DevSamurai
🗂️ 01 - Grid Template
🗂️ 02 - Grid Gap
🗂️ 03 - Grid Auto Columns
🗂️ 04 - Grid Auto Rows
🗂️ 05 - Grid Auto Flow
🗂️ 06 - Grid Column
🗂️ 07 - Grid Row
🗂️ 08 - Grid Area
🗂️ 09 - Responsividade
🗋 README.md