Notas Técnicas do zhaoJian

Curso IT Fundamentos CSS 031_Layout de grade Grid

Aprendizado / Fundamentos CSS ~12298 palavras · 31 min de leitura - visualizações

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).

Efeito do exemplo

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 como display: grid ou display: inline-grid para 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 como fr, px, em, etc.).
  • grid-template-rows: Define o número de linhas e a altura da linha do container de grade (usando unidades como fr, px, em, etc.).
  • grid-template: Define grid-template-columns e grid-template-rows ao 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:

Efeito do exemplo 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:

Efeito do exemplo 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:

Efeito do exemplo 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:

Efeito do exemplo

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:

Efeito do exemplo

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 de grid-column-start e grid-column-end. Com grid-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 de grid-row-start e grid-row-end. Com grid-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 propriedades grid-row-start, grid-column-start, grid-row-end e grid-column-end. Com grid-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:

Efeito do exemplo

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:

Efeito do exemplo

Compartilhar:

Comentários