🔸 1. Introdução aos Layouts CSS Link to heading
📌 O que são Layouts CSS? Link to heading
Layouts CSS são técnicas usadas para organizar elementos em uma página web. Antigamente, usávamos float, inline-block ou até position para montar layouts — mas essas abordagens exigiam muitos ajustes manuais e não eram responsivas por padrão.
📌 Por que usar Flexbox e Grid? Link to heading
-
Flexbox trabalha em uma dimensão por vez (horizontal ou vertical).
-
Grid Layout lida com duas dimensões (linhas e colunas).
Esses dois modelos modernos tornam o desenvolvimento de layouts muito mais simples, responsivo e organizado.
📌 Quando usar cada um? Link to heading
1
2| Situação | Flexbox ✅ | Grid ✅ |
3
4|----------------------------------|-----------|---------|
5
6| Alinhar itens em uma linha | ✅ | ❌ |
7
8| Criar uma galeria de imagens | ✅ | ✅ |
9
10| Layout completo da página | ❌ | ✅ |
11
12| Centralizar elementos | ✅ | ✅ |
🔸 2. Guia Flexbox Link to heading
📌 display: flex
Link to heading
Define o container como um flex container.
1
2.container {
3
4 display: flex;
5
6}
📌 flex-direction
Link to heading
Define a direção que os itens flexíveis serão posicionados no container.
-
row(padrão): itens da esquerda para a direita. -
row-reverse: itens da direita para a esquerda. -
column: itens de cima para baixo. -
column-reverse: itens de baixo para cima.
1
2.container {
3
4 display: flex;
5
6 flex-direction: row; /* ou row-reverse, column, column-reverse */
7
8}
💡 Exemplo prático: Link to heading
1
2<div class="container">
3
4 <div class="item">A</div>
5
6 <div class="item">B</div>
7
8 <div class="item">C</div>
9
10</div>
11
12
13
14<style>
15
16.container {
17
18 display: flex;
19
20 flex-direction: column;
21
22 gap: 10px;
23
24 background: #f0f0f0;
25
26 padding: 10px;
27
28}
29
30.item {
31
32 background: lightgreen;
33
34 padding: 10px;
35
36}
37
38</style>
📌 justify-content
Link to heading
Alinha os itens no eixo principal (horizontal por padrão).
1
2.container {
3
4 justify-content: space-between; /* flex-start | center | space-around */
5
6}
📌 align-items e align-content
Link to heading
Alinha os itens no eixo cruzado (vertical por padrão).
1
2.container {
3
4 align-items: center;
5
6 align-content: stretch;
7
8}
📌 flex-wrap
Link to heading
Permite que os itens quebrem linha.
1
2.container {
3
4 flex-wrap: wrap;
5
6}
📌 gap
Link to heading
Espaçamento entre os itens.
1
2.container {
3
4 gap: 20px;
5
6}
📌 flex-grow, flex-shrink, flex-basis
Link to heading
Controla o crescimento, encolhimento e tamanho base dos itens.
1
2.item {
3
4 flex-grow: 1;
5
6 flex-shrink: 1;
7
8 flex-basis: 200px;
9
10}
📌 order
Link to heading
Altera a ordem de exibição dos itens.
1
2.item {
3
4 order: 2;
5
6}
📌 align-self
Link to heading
Alinha individualmente um item no eixo cruzado.
1
2.item {
3
4 align-self: flex-end;
5
6}
💡 Exemplo Prático Flexbox (Cards Responsivos) Link to heading
1
2<div class="cards">
3
4 <div class="card">Card 1</div>
5
6 <div class="card">Card 2</div>
7
8 <div class="card">Card 3</div>
9
10</div>
11
12
13
14<style>
15
16.cards {
17
18 display: flex;
19
20 flex-wrap: wrap;
21
22 gap: 1rem;
23
24}
25
26.card {
27
28 background: lightblue;
29
30 padding: 20px;
31
32 flex: 1 1 200px;
33
34}
35
36</style>
🔸 3. Guia Grid Layout Link to heading
📌 display: grid
Link to heading
Ativa o Grid Layout.
1
2.container {
3
4 display: grid;
5
6}
📌 grid-template-columns / rows
Link to heading
Define as colunas e linhas do grid.
1
2.container {
3
4 grid-template-columns: 1fr 2fr;
5
6 grid-template-rows: auto auto;
7
8}
📌 gap, row-gap, column-gap
Link to heading
Define os espaçamentos.
1
2.container {
3
4 gap: 10px;
5
6 row-gap: 20px;
7
8 column-gap: 10px;
9
10}
📌 grid-column, grid-row, grid-area
Link to heading
Define a posição dos itens no grid.
1
2.item {
3
4 grid-column: 1 / 3;
5
6 grid-row: 1 / 2;
7
8}
📌 grid-template-areas
Link to heading
Define áreas nomeadas no grid.
1
2.container {
3
4 grid-template-areas:
5
6 "header header"
7
8 "menu content"
9
10 "footer footer";
11
12}
13
14.header {
15
16 grid-area: header;
17
18}
📌 justify-items, align-items, place-items
Link to heading
Alinhamento interno dos itens.
1
2.container {
3
4 justify-items: center;
5
6 align-items: center;
7
8}
📌 auto-fit, auto-fill, minmax()
Link to heading
Técnicas para grids responsivos.
1
2.container {
3
4 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
5
6}
💡 Exemplo Prático Grid (Cards Responsivos) Link to heading
1
2<div class="grid">
3
4 <div class="card">1</div>
5
6 <div class="card">2</div>
7
8 <div class="card">3</div>
9
10</div>
11
12
13
14<style>
15
16.grid {
17
18 display: grid;
19
20 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
21
22 gap: 1rem;
23
24}
25
26.card {
27
28 background: salmon;
29
30 padding: 20px;
31
32}
33
34</style>
🔸 4. Comparativo Flexbox vs Grid Link to heading
1
2| Característica | Flexbox | Grid |
3
4|------------------------|-------------------|--------------------|
5
6| Eixo principal | 1 dimensão | 2 dimensões |
7
8| Layout completo | ❌ | ✅ |
9
10| Alinhamento fácil | ✅ | ✅ |
11
12| Reorganização visual | Parcial | Completa |
13
14| Suporte a sobreposição | ❌ | ✅ |
📌 Quando usar um ou outro? Link to heading
-
Flexbox: Alinhar itens em linha/coluna, menus, botões.
-
Grid: Layouts complexos com várias colunas e linhas.
🔸 5. 🧱 Estrutura HTML básica Link to heading
1
2<div class="layout">
3
4 <header>Header</header>
5
6 <aside>Menu</aside>
7
8 <main>
9
10 <div class="cards">
11
12 <div class="card">Card A</div>
13
14 <div class="card">Card B</div>
15
16 </div>
17
18 </main>
19
20 <footer>Rodapé</footer>
21
22</div>
🎨 CSS básico com Grid + Flexbox Link to heading
1
2.layout {
3
4 display: grid;
5
6 grid-template-areas:
7
8 "header header"
9
10 "menu main"
11
12 "footer footer";
13
14 grid-template-columns: 200px 1fr;
15
16 grid-template-rows: auto 1fr auto;
17
18 gap: 10px;
19
20 height: 100vh;
21
22}
23
24
25
26header { grid-area: header; background: #ccc; }
27
28aside { grid-area: menu; background: #ddd; }
29
30main { grid-area: main; background: #eee; }
31
32footer { grid-area: footer; background: #ccc; }
33
34
35
36.cards {
37
38 display: flex;
39
40 flex-wrap: wrap;
41
42 gap: 1rem;
43
44 margin: 1rem;
45
46}
47
48.card {
49
50 background: #fff;
51
52 padding: 20px;
53
54 flex: 1 1 200px;
55
56 border: 1px solid #ccc;
57
58}