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:

  1. gap (Shorthand):

    • Esta é a propriedade mais moderna e recomendada. É um shorthand para row-gap e column-gap.
    • Sintaxe:
      • gap: <valor>; (Define o mesmo espaçamento para linhas e colunas).
        • Ex: gap: 10px; (10px de espaçamento entre linhas e colunas).
      • 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).
  2. row-gap (Antigo grid-row-gap):

    • Define o espaçamento entre as linhas do grid.
    • Ex: row-gap: 15px;
  3. column-gap (Antigo grid-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 margin em 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 gap cria um espaço visível entre os itens, mas não nas bordas externas do grid.

Boas Práticas:

  • Use gap: Prefira a propriedade gap (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: gap cria espaço entre as trilhas, enquanto margin cria 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.