Aula 13 - Grid Layout 🏁
Objetivo
Objetivo: Compreender o potencial do CSS Grid para criar layouts bidimensionais (linhas e colunas simultâneas) e aprender a dividir a página em grades profissionais e flexíveis.
1. O que é CSS Grid? 🤔
Diferente do Flexbox (que foca em uma dimensão), o Grid Layout é feito para duas dimensões: você controla o alinhamento tanto na horizontal (colunas) quanto na vertical (linhas).
- Flexbox: Ideal para componentes (menus, botões alinhados).
- Grid: Ideal para o layout geral da página (cabeçalho, barra lateral, conteúdo e rodapé).
2. Definindo a Grade 📐
Para começar, transformamos um elemento em um Grid Container:
.container {
display: grid;
grid-template-columns: 200px auto; /* Duas colunas */
grid-template-rows: 100px auto 50px; /* Três linhas */
}
3. Unidades Modernas: fr e repeat 📏
O CSS Grid introduziu a unidade de Fração (fr), que distribui o espaço disponível de forma proporcional.
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 colunas iguais */
gap: 20px; /* Espaçamento entre as células */
}
repeat(3, 1fr): Cria 3 colunas que dividem o espaço igualmente.gap: Define o "respiro" entre as linhas e colunas.
4. Posicionando Itens (Grid Column/Row) 🎯
Podemos dizer exatamente onde um item começa e onde ele termina na grade usando as linhas da grade.
5. Visualizando a Grade 📊
graph TD
subgraph Grid
C1[Coluna 1]
C2[Coluna 2]
C3[Coluna 3]
end
Note over C1,C3: grid-template-columns: 1fr 1fr 1fr
6. Prática: Layout de Galeria 🚀
Vamos criar uma grade de fotos no terminal:
$ touch index.html estilo.css
$ # No CSS, para criar um grid 3x3:
$ .galeria {
$ display: grid;
$ grid-template-columns: repeat(3, 1fr);
$ gap: 10px;
$ }
7. Mini-Projeto: Layout Completo de Site 🖱️
- Crie um
<div>pai chamado.layout. - Dentro dele, coloque:
<header>,<aside>,<main>e<footer>. - No CSS, transforme o
.layoutem um Grid. - Configure o grid para ter:
- Um cabeçalho que ocupa toda a largura (
grid-column: 1 / 3). - Uma barra lateral (
aside) e o conteúdo principal (main) lado a lado. - Um rodapé que também ocupa toda a largura.
- Um cabeçalho que ocupa toda a largura (
- Dica: Use cores de fundo diferentes para ver a "mágica" acontecer.
8. Exercícios Progressivos 📝
Básicos
- Qual a diferença fundamental entre Flexbox e Grid?
- Para que serve a propriedade
gap?
Intermediários
- O que significa a unidade
1frno CSS Grid? - Como fariam para criar uma grade com 4 colunas de exatamente
250pxcada uma, usando a funçãorepeat?
Desafio 🧠
- Pesquise sobre a propriedade
grid-area. Como ela facilita a montagem de layouts complexos comparada ao uso de números de linhas?
Próxima Aula: Vamos aprender a adaptar o site para celulares com a Responsividade! 📱