Combinações de mesclagem de linhas e colunas em CSS Grid
Vamos examinar os diferentes tipos de mesclagem de linhas e colunas.
Exemplo
Vamos criar uma tabela, combinando
as propriedades grid-column
e grid-row:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
border: 2px solid #696989;
padding: 10px;
height: 300px;
width: 400px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 3;
}
#elem2 {
grid-row: 1 / 2;
}
#elem3 {
grid-row: 1 / 2;
}
#elem4 {
grid-row: 2 / 3;
grid-column: 2 / 4;
}
:
Exemplo
E agora vamos fazer com que o primeiro e o quarto blocos ocupem toda a linha, o segundo bloco - duas linhas e duas colunas, e o terceiro e quarto blocos - uma linha e duas colunas:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
<div id="elem5">5</div>
</div>
#parent {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
border: 2px solid #696989;
padding: 10px;
height: 300px;
width: 400px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 2;
grid-column: 1 / 4;
}
#elem2 {
grid-row: 2 / 4;
grid-column: 1 / 2;
}
#elem3 {
grid-row: 2 / 3;
grid-column: 2 / 4;
}
#elem4 {
grid-row: 3 / 3;
grid-column: 2 / 4;
}
#elem5 {
grid-row: 4 / 5;
grid-column: 1 / 4;
}
:
Exemplo
Vamos fazer com que o primeiro elemento na tabela ocupe todas as colunas na primeira linha, e os demais elementos sejam posicionados na segunda linha, ocupando colunas de mesma largura:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
border: 2px solid #696989;
padding: 10px;
height: 300px;
width: 400px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 2;
grid-column: 1 / 4;
}
#elem2 {
grid-row: 2 / 3;
}
#elem3 {
grid-row: 2 / 3;
}
#elem4 {
grid-row: 2 / 3;
}
:
Exemplo
Vamos modificar o exemplo anterior para que o segundo elemento ocupe uma coluna três vezes mais larga que as colunas do terceiro e quarto elementos:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
height: 300px;
width: 400px;
display: grid;
grid-template-columns: 3fr 1fr 1fr;
border: 2px solid #696989;
padding: 10px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 2;
grid-column: 1 / 4;
}
#elem2 {
grid-row: 2 / 3;
}
#elem3 {
grid-row: 2 / 3;
}
#elem4 {
grid-row: 2 / 3;
}
:
Exemplo
Agora vamos posicionar dois elementos na primeira linha, definindo larguras de coluna diferentes para cada um:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
</div>
#parent {
display: grid;
grid-template-columns: repeat(4, 1fr);
border: 2px solid #696989;
padding: 10px;
height: 300px;
width: 400px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 2;
grid-column: 1 / 4;
}
#elem2 {
grid-row: 1 / 2;
grid-column: 4 / 5;
}
#elem3 {
grid-row: 2 / 3;
grid-column: 1 / 3;
}
#elem4 {
grid-row: 2 / 3;
grid-column: 3 / 5;
}
:
Exemplo
Suponha que agora tenhamos uma tabela composta por cinco elementos. Vamos posicionar o primeiro elemento na linha superior e todos os demais - na segunda linha:
<div id="parent">
<div id="elem1">1</div>
<div id="elem2">2</div>
<div id="elem3">3</div>
<div id="elem4">4</div>
<div id="elem5">5</div>
</div>
#parent {
display: grid;
grid-template-columns: repeat(4, 1fr);
border: 2px solid #696989;
padding: 10px;
height: 300px;
width: 400px;
}
#parent > div {
padding: 10px;
border: 1px solid #696989;
}
#elem1 {
grid-row: 1 / 2;
grid-column: 1 / 5;
}
#elem2 {
grid-row: 2 / 3;
grid-column: 1 / 2;
}
#elem3 {
grid-row: 2 / 3;
grid-column: 2 / 3;
}
#elem4 {
grid-row: 2 / 3;
grid-column: 3 / 4;
}
#elem5 {
grid-row: 2 / 3;
grid-column: 4 / 5;
}
:
Tarefas Práticas
Posicione todos os elementos de acordo com o seguinte exemplo:
Posicione todos os elementos de acordo com o seguinte exemplo: