Propriedades grid-gap, grid-column-gap, grid-row-gap: Espaçamento entre células
Controle o espaçamento entre as linhas e colunas do seu grid.
No CSS Grid, você não precisa se preocupar em adicionar margin ou padding complicado aos seus Itens Grid para criar espaçamento entre eles. O Grid oferece propriedades dedicadas para isso, que são aplicadas ao Contêiner Grid.
Essas propriedades criam um espaçamento consistente entre as células do seu grid, sem afetar o tamanho dos Itens Grid ou do próprio contêiner.
Pense nessas propriedades como as "juntas" ou "espaçadores" que você coloca entre os blocos de um quebra-cabeça. Elas garantem que os blocos não fiquem grudados, mas também não ocupam o espaço que os blocos deveriam ocupar.
Como funcionam as propriedades de espaçamento
Existem três propriedades principais para controlar o espaçamento no Grid:
gap(Shorthand):- Esta é a propriedade mais moderna e recomendada. É um shorthand para
row-gapecolumn-gap. - Sintaxe:
gap: <valor>;(Define o mesmo espaçamento para linhas e colunas).- Ex:
gap: 10px;(10px de espaçamento entre linhas e colunas).
- Ex:
gap: <valor-linha> <valor-coluna>;(Define espaçamento diferente para linhas e colunas).- Ex:
gap: 20px 10px;(20px entre as linhas, 10px entre as colunas).
- Ex:
- Esta é a propriedade mais moderna e recomendada. É um shorthand para
row-gap(Antigogrid-row-gap):- Define o espaçamento entre as linhas do grid.
- Ex:
row-gap: 15px;
column-gap(Antigogrid-column-gap):- Define o espaçamento entre as colunas do grid.
- Ex:
column-gap: 20px;
Importante: As propriedades grid-gap, grid-row-gap e grid-column-gap foram renomeadas para gap, row-gap e column-gap respectivamente para serem consistentes com o CSS Multi-column Layout e Flexbox. Embora as versões antigas ainda funcionem na maioria dos navegadores, é uma boa prática usar as novas.
Vantagens de usar gap
- Consistência: Garante um espaçamento uniforme entre todas as células.
- Simplicidade: Muito mais fácil de gerenciar do que
marginem itens individuais, que pode levar a problemas de "margens colapsadas" ou espaçamento indesejado nas bordas do contêiner. - Não afeta o tamanho dos itens: O
gapé um espaço entre as trilhas, não dentro delas. Isso significa que o tamanho dos seus Itens Grid não é reduzido pelo espaçamento. - Responsividade: Funciona perfeitamente com layouts responsivos, pois o espaçamento é sempre aplicado entre as trilhas.
Exemplo Prático:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Espaçamento no CSS Grid</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 colunas iguais */
grid-template-rows: repeat(2, 100px); /* 2 linhas de 100px */
background-color: #e0e0e0;
border: 2px solid #333;
padding: 10px;
width: 90%;
margin: 0 auto 30px auto;
}
.grid-item {
background-color: lightblue;
border: 1px solid blue;
padding: 15px;
color: #333;
font-weight: bold;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
/* --- Exemplos de gap --- */
.container-gap-10px {
gap: 10px; /* 10px entre linhas e colunas */
}
.container-gap-mixed {
gap: 20px 5px; /* 20px entre linhas, 5px entre colunas */
}
.container-row-column-gap {
row-gap: 30px; /* Apenas entre as linhas */
column-gap: 15px; /* Apenas entre as colunas */
}
</style>
</head>
<body>
<h1>Propriedades de Espaçamento no CSS Grid</h1>
<h2>`gap: 10px;` (Espaçamento uniforme)</h2>
<div class="grid-container container-gap-10px">
<div class="grid-item">Item 1</div>
<div class="grid-item">Item 2</div>
<div class="grid-item">Item 3</div>
<div class="grid-item">Item 4</div>
<div class="grid-item">Item 5</div>
<div class="grid-item">Item 6</div>
</div>
<h2>`gap: 20px 5px;` (Espaçamento misto: linha 20px, coluna 5px)</h2>
<div class="grid-container container-gap-mixed">
<div class="grid-item">Item 1</div>
<div class="grid-item">Item 2</div>
<div class="grid-item">Item 3</div>
<div class="grid-item">Item 4</div>
<div class="grid-item">Item 5</div>
<div class="grid-item">Item 6</div>
</div>
<h2>`row-gap: 30px; column-gap: 15px;` (Espaçamento explícito)</h2>
<div class="grid-container container-row-column-gap">
<div class="grid-item">Item 1</div>
<div class="grid-item">Item 2</div>
<div class="grid-item">Item 3</div>
<div class="grid-item">Item 4</div>
<div class="grid-item">Item 5</div>
<div class="grid-item">Item 6</div>
</div>
</body>
</html>
Resultado:
- Você verá três contêineres grid, cada um com um tipo diferente de espaçamento entre as células.
- Observe como o
gapcria um espaço visível entre os itens, mas não nas bordas externas do grid.
Boas Práticas:
- Use
gap: Prefira a propriedadegap(shorthand) para definir o espaçamento, pois é mais concisa e moderna. - Aplicado ao Contêiner: Lembre-se que as propriedades de espaçamento são sempre aplicadas ao Contêiner Grid, não aos Itens Grid.
- Consistência: O
gapé ideal para manter um espaçamento consistente em todo o seu grid, o que é fundamental para um design limpo e organizado. - Não confunda com
margin:gapcria espaço entre as trilhas, enquantomargincria espaço ao redor dos elementos. Eles servem a propósitos diferentes.
Dominar as propriedades de espaçamento é essencial para criar layouts Grid visualmente agradáveis e bem organizados, sem as dores de cabeça de gerenciar margens complexas.