Curso IT Fundamentos CSS 031_Layout de grade Grid
Layout de grade Grid
A grade é um padrão de layout composto por uma série de linhas horizontais e verticais. Com base na grade, podemos organizar elementos de design, ajudando-nos a projetar uma série de páginas com elementos de posição e largura fixas, tornando nossas páginas de sites mais unificadas.
Uma grade geralmente possui muitas colunas (column) e linhas (row), bem como lacunas entre linhas e linhas, colunas e colunas, essa lacuna é geralmente chamada de calha (gutter).

Conceitos básicos
O layout Grid é composto pelos seguintes conceitos básicos:
- Container de grade (grid container): O layout de grade é composto por container de grade e itens de grade. O container de grade é o container que coloca os itens de grade na grade. O container de grade pode ser qualquer elemento, mas geralmente usa o elemento
div. - Item de grade (grid item): O item de grade é o elemento colocado no container de grade. O item de grade pode ser qualquer elemento, mas geralmente usa o elemento
div. - Linha de grade (grid line): A linha de grade é a linha que divide o container de grade em linhas e colunas. A linha de grade pode ser horizontal ou vertical.
- Coluna de grade (grid column): A coluna de grade é a linha vertical no container de grade.
- Linha de grade (grid row): A linha de grade é a linha horizontal no container de grade.
Propriedades comuns
Propriedades do container de grade
O container de grade possui as seguintes propriedades para controlar o layout de grade:
display: Define o modo de exibição do container de grade. O container de grade deve ser definido comodisplay: gridoudisplay: inline-gridpara usar o layout de grade.grid-template-columns: Define o número de colunas e a largura da coluna do container de grade (usando unidades comofr,px,em, etc.).grid-template-rows: Define o número de linhas e a altura da linha do container de grade (usando unidades comofr,px,em, etc.).grid-template: Definegrid-template-columnsegrid-template-rowsao mesmo tempo.grid-auto-columns: Define a largura da coluna do container de grade.grid-auto-rows: Define a altura da linha do container de grade.
Propriedades do item de grade
O item de grade possui as seguintes propriedades para controlar o layout do item de grade na grade:
grid-column: Define a coluna onde o item de grade está localizado.grid-row: Define a linha onde o item de grade está localizado.grid-column-start: Define a posição inicial do item de grade na coluna.grid-column-end: Define a posição final do item de grade na coluna.grid-row-start: Define a posição inicial do item de grade na linha.grid-row-end: Define a posição final do item de grade na linha.grid-area: Define a área onde o item de grade está localizado.grid-gap: Define o espaçamento entre as linhas de grade.
Layout de grade
Definir larguras de coluna e alturas de linha fixas e adaptáveis
Exemplo:
.grid-example{ display: grid; grid-template-columns: 100px 200px auto; /* Primeira coluna 100px, segunda coluna 200px, espaço restante alocado para coluna adaptável */ grid-template-rows: 100px 200px auto; /* Primeira linha 100px, segunda linha 200px, espaço restante alocado para linha adaptável */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> </div>Efeito:
Usar porcentagem para definir largura de coluna e altura de linha
Exemplo:
.grid-example{ display: grid; grid-template-columns: 30% 2fr 1fr; /* Primeira coluna ocupa 30%, segunda coluna ocupa duas partes do espaço restante, terceira coluna ocupa uma parte do espaço restante */ grid-template-rows: 30% 2fr 1fr; /* Primeira linha ocupa 30%, segunda linha ocupa duas partes do espaço restante, terceira linha ocupa uma parte do espaço restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> </div>Efeito:
Divisão igual (distribuição média) da largura da coluna e altura da linha
Exemplo:
.grid-example{ display: grid; grid-template-columns: repeat(3, 1fr); /* Três colunas iguais, cada coluna ocupa uma parte do espaço restante */ grid-template-rows: repeat(3, 1fr); /* Três linhas iguais, cada linha ocupa uma parte do espaço restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> </div>Efeito:
Usar minmax para definir largura e altura mínima e máxima de colunas e linhas
Exemplo:
.grid-example{ display: grid; grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr); /* Primeira coluna largura mínima 100px, ocupa uma parte do espaço restante; segunda coluna largura mínima 200px, ocupa duas partes do espaço restante */ grid-template-rows: minmax(100px, 1fr) minmax(200px, 2fr); /* Primeira linha altura mínima 100px, ocupa uma parte do espaço restante; segunda linha altura mínima 200px, ocupa duas partes do espaço restante */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> </div>Efeito:

Espaçamento de grade
O espaçamento de grade é controlado por duas propriedades: grid-row-gap e grid-column-gap. Além disso, o CSS Grid Level 2 introduziu a propriedade gap, que pode controlar simultaneamente grid-row-gap e grid-column-gap.
Exemplo:
.grid-example{ display: grid; grid-template-columns: 30% 30% 30%; grid-template-rows: 200px 200px; grid-row-gap: 50px; /* Espaçamento entre linhas de 50px */ grid-column-gap: 30px; /* Espaçamento entre colunas de 30px */ /* gap: 50px 30px; Espaçamento entre linhas de 50px, espaçamento entre colunas de 30px */}.item{ margin: 10px; background-color: rgb(100, 150, 200);} <div class="grid-example"> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> <div class="item">Demonstração Grid</div> </div>Efeito:

Posicionamento de grade
O posicionamento de grade geralmente se refere ao uso de propriedades como grid-column, grid-row e grid-area para posicionar itens no layout de grade. Essas propriedades são usadas para especificar as colunas e linhas ocupadas pelo item na grade ou especificar diretamente a área onde o item está localizado.
grid-columné uma propriedade usada para definir as colunas que um item de grade ocupa. É uma abreviação degrid-column-startegrid-column-end. Comgrid-column, você pode definir mais convenientemente a posição do item de grade na direção horizontal e o número de colunas que ele ocupa.grid-rowé uma propriedade usada para definir as linhas que um item de grade ocupa. É uma abreviação degrid-row-startegrid-row-end. Comgrid-row, você pode definir mais convenientemente a posição do item de grade na direção vertical e o número de linhas que ele ocupa.- A propriedade
grid-areaé uma propriedade abreviada usada para definir simultaneamente as propriedadesgrid-row-start,grid-column-start,grid-row-endegrid-column-end. Comgrid-area, você pode definir mais intuitivamente a posição e o tamanho de um item de grade no layout de grade.
Exemplo:
.example { display: grid; grid-template-columns: repeat(3, 1fr); /* Define 3 colunas, cada coluna ocupa 1 parte do espaço */ grid-template-rows: repeat(2, 150px); /* Define 2 linhas, cada linha com altura de 150px */ gap: 10px; padding: 20px;}.item { background-color: #f2f2f2; padding: 20px; border: 1px solid #ddd; text-align: center;}/* Posicionamento usando grid-column e grid-row */.item1 { grid-column: 1 / 3; /* Da primeira coluna à terceira coluna(1+2 colunas) */ grid-row: 1 / 2; /* Da primeira linha à segunda linha(1 linha) */}/* Posicionamento usando grid-area */.item2 { grid-area: 2 / 2 / 3 / 4; /* Da segunda linha segunda coluna à terceira linha quarta coluna(2 linhas)(2+3 colunas) */}<div class="example"> <div class="item item1">Item 1</div> <div class="item item2">Item 2</div> <div class="item">Item 3</div> <div class="item">Item 4</div> <div class="item">Item 5</div> <div class="item">Item 6</div></div>Efeito:

Exemplo:
body { margin: 0; padding: 0;}
.container { display: grid; grid-template-columns: 1fr 2fr; /* Define duas colunas, primeira coluna ocupa uma parte, segunda coluna ocupa duas partes */ grid-template-rows: auto; /* Define altura da linha, primeira e terceira linhas determinadas pelo conteúdo, segunda linha ocupa espaço restante */ grid-template-areas: "header header" "sidebar main" "footer footer"; /* Define layout de área, cada área é representada por uma string, espaço separa células, quebra de linha indica nova linha */ min-height: 100vh; /* Define altura mínima, garante que o footer seja visível mesmo quando a altura do conteúdo é menor que a viewport */}
.header { grid-area: header; /* Coloca .header na área chamada "header" */ background-color: #333; color: #fff; padding: 10px;}
.sidebar { grid-area: sidebar; /* Coloca .sidebar na área chamada "sidebar" */ background-color: #f2f2f2; padding: 10px;}
.main { grid-area: main; /* Coloca .main na área chamada "main" */ padding: 10px;}
.footer { grid-area: footer; /* Coloca .footer na área chamada "footer" */ background-color: #333; color: #fff; padding: 10px;} <div class="container"> <div class="header">Header</div> <div class="sidebar">Sidebar</div> <div class="main"> <h1>Main Content</h1> <p>This is the main content area.</p> </div> <div class="footer">Footer</div> </div>Efeito:
