Propriedades justify-content, align-content, place-content: Alinhando o grid inteiro
Aprenda a alinhar todo o grid dentro do contêiner.
Você já aprendeu a alinhar os Itens Grid dentro de suas células com justify-items e align-items. Agora, vamos dar um passo para trás e ver como alinhar o grid inteiro (todas as suas linhas e colunas) dentro do Contêiner Grid.
Isso é útil quando o tamanho total do seu grid (a soma das larguras das colunas e alturas das linhas, mais os gaps) é menor do que o espaço disponível no Contêiner Grid. Nesses casos, você terá espaço extra no contêiner, e as propriedades justify-content, align-content e place-content permitem que você controle como esse espaço extra é distribuído.
Pense nisso como posicionar um quadro menor em uma parede maior. Você pode querer centralizar o quadro, empurrá-lo para um canto, ou distribuir o espaço restante ao redor dele.
Entendendo os Eixos de Alinhamento do Grid
Assim como no Flexbox, o alinhamento do conteúdo do grid ocorre em dois eixos:
- Eixo da Linha (Inline/Horizontal): Controlado por
justify-content. Alinha o grid inteiro horizontalmente dentro do contêiner. - Eixo da Coluna (Block/Vertical): Controlado por
align-content. Alinha o grid inteiro verticalmente dentro do contêiner.
Propriedades de Alinhamento do Conteúdo do Grid
Essas propriedades são aplicadas ao Contêiner Grid.
1. justify-content (Eixo da Linha/Horizontal)
Define como o grid inteiro é alinhado ao longo do eixo da linha (horizontal) dentro do Contêiner Grid, quando há espaço extra.
Valores:
start: O grid é alinhado ao início do contêiner (esquerda emltr).end: O grid é alinhado ao fim do contêiner (direita emltr).center: O grid é centralizado horizontalmente no contêiner.stretch(padrão): As trilhas do grid são esticadas para preencher o espaço disponível (semax-contentouautofor usado para o tamanho da trilha).space-around: Distribui o espaço extra igualmente ao redor de cada trilha do grid.space-between: Distribui o espaço extra igualmente entre as trilhas do grid (sem espaço nas bordas externas).space-evenly: Distribui o espaço extra igualmente entre as trilhas e também nas bordas externas.
2. align-content (Eixo da Coluna/Vertical)
Define como o grid inteiro é alinhado ao longo do eixo da coluna (vertical) dentro do Contêiner Grid, quando há espaço extra.
Valores:
start: O grid é alinhado ao início do contêiner (topo).end: O grid é alinhado ao fim do contêiner (base).center: O grid é centralizado verticalmente no contêiner.stretch(padrão): As trilhas do grid são esticadas para preencher o espaço disponível (semax-contentouautofor usado para o tamanho da trilha).space-around: Distribui o espaço extra igualmente ao redor de cada trilha do grid.space-between: Distribui o espaço extra igualmente entre as trilhas do grid (sem espaço nas bordas externas).space-evenly: Distribui o espaço extra igualmente entre as trilhas e também nas bordas externas.
3. place-content (Shorthand para align-content e justify-content)
Aplicado ao Contêiner Grid. É um shorthand para definir align-content e justify-content em uma única propriedade.
Sintaxe:
.grid-container {
place-content: <align-content-valor> <justify-content-valor>;
}
Exemplos:
place-content: center;- Equivalente a:
align-content: center; justify-content: center; - Centraliza o grid inteiro tanto vertical quanto horizontalmente no contêiner.
- Equivalente a:
place-content: start space-between;- Equivalente a:
align-content: start; justify-content: space-between; - Alinha o grid ao topo e distribui o espaço horizontalmente entre as colunas.
- Equivalente a:
Exemplo Prático:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Alinhando o Grid Inteiro</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.grid-container {
display: grid;
grid-template-columns: 100px 100px 100px; /* Colunas fixas, total 300px */
grid-template-rows: 80px 80px; /* Linhas fixas, total 160px */
gap: 10px;
background-color: #e0e0e0;
border: 2px solid #333;
padding: 10px;
width: 500px; /* Contêiner maior que o grid (500px > 300px + 2*10px gap) */
height: 300px; /* Contêiner maior que o grid (300px > 160px + 1*10px gap) */
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 alinhamento do grid inteiro --- */
.container-start {
justify-content: start;
align-content: start;
background-color: lightcoral;
}
.container-center {
justify-content: center;
align-content: center;
background-color: lightgreen;
}
.container-end {
justify-content: end;
align-content: end;
background-color: lightgoldenrodyellow;
}
.container-space-between {
justify-content: space-between;
align-content: space-between;
background-color: lightsalmon;
}
.container-space-around {
justify-content: space-around;
align-content: space-around;
background-color: lightgray;
}
.container-space-evenly {
justify-content: space-evenly;
align-content: space-evenly;
background-color: lightcyan;
}
.container-place-content {
place-content: center space-around; /* align-content: center; justify-content: space-around; */
background-color: lightpink;
}
</style>
</head>
<body>
<h1>Alinhando o Grid Inteiro</h1>
<p>Observe que os exemplos abaixo só terão efeito se o tamanho total do grid (colunas + gaps e linhas + gaps) for menor que o tamanho do contêiner.</p>
<h2>`justify-content: start; align-content: start;` (Canto Superior Esquerdo)</h2>
<div class="grid-container container-start">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`justify-content: center; align-content: center;` (Centralizado)</h2>
<div class="grid-container container-center">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`justify-content: end; align-content: end;` (Canto Inferior Direito)</h2>
<div class="grid-container container-end">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`justify-content: space-between; align-content: space-between;`</h2>
<div class="grid-container container-space-between">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`justify-content: space-around; align-content: space-around;`</h2>
<div class="grid-container container-space-around">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`justify-content: space-evenly; align-content: space-evenly;`</h2>
<div class="grid-container container-space-evenly">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
<h2>`place-content: center space-around;` (Shorthand)</h2>
<div class="grid-container container-place-content">
<div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div>
<div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
</body>
</html>
Resultado:
- Você verá vários contêineres grid, cada um demonstrando como o grid inteiro (todas as suas colunas e linhas) é alinhado dentro do espaço extra do contêiner.
- Observe a diferença na distribuição do espaço extra entre
space-between,space-aroundespace-evenly.
Boas Práticas:
- Espaço Extra: Essas propriedades só terão efeito se o tamanho total do grid for menor que o tamanho do Contêiner Grid. Se o grid preencher todo o contêiner, não haverá espaço extra para distribuir.
- Contêiner Grid: Lembre-se que
justify-content,align-contenteplace-contentsão sempre aplicadas ao Contêiner Grid. stretchcomo padrão: O valor padrão parajustify-contentealign-contentéstretch. Isso significa que, se as trilhas do grid forem definidas comautooumax-content, elas tentarão se esticar para preencher o espaço disponível. Se forem definidas com tamanhos fixos (px,em,rem) oufr,stretchnão terá efeito e o padrão serástart.- Shorthand
place-content: Useplace-contentpara concisão quandoalign-contentejustify-contenttiverem os mesmos valores ou quando você quiser defini-los juntos.
Dominar essas propriedades de alinhamento do conteúdo do grid é essencial para ter controle total sobre a aparência dos seus layouts Grid, garantindo que o grid como um todo esteja sempre posicionado e distribuído da maneira que você deseja dentro do seu contêiner.