215 of 313 menu

Propriedade grid-template-rows

A propriedade grid-template-rows define a quantidade e a largura das linhas que um elemento ocupará no grid ou grade. No valor da propriedade, especificamos a largura das linhas em qualquer unidade de tamanho. A propriedade é especificada no elemento pai e define a largura das linhas dos elementos filhos.

Ao especificar valores em pixels nas propriedades, os tamanhos das linhas corresponderão exatamente a eles. Se usarmos a palavra auto, as linhas preencherão todo o espaço disponível. O uso da unidade fr (fração) significa que todo o espaço será dividido em partes iguais. A vantagem de fr é sua adaptabilidade a diferentes contêineres ou resoluções de tela, pois fr simplesmente divide-os no número especificado de frações sem vinculação a um tamanho exato em pixels.

Sintaxe

seletor { grid-template-rows: largura da linha; }

Exemplo

Vamos definir a largura das linhas para nossos elementos no grid:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: 50px 100px 50px 50px; border: 2px solid #696989; padding: 10px; width: 400px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Vamos definir para a primeira e terceira linhas uma largura fixa em pixels, e a segunda linha preencherá automaticamente o espaço disponível:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> </div> #parent { display: grid; grid-template-rows: 100px auto 60px; border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Agora, usando a propriedade grid-template-rows, vamos fazer com que a primeira e a segunda linhas ocupem uma parte do contêiner, e a terceira linha - três partes:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> </div> #parent { display: grid; grid-template-rows: 1fr 1fr 3fr; border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Os valores especificados em unidades fr podem ser fracionários. Vamos modificar o exemplo anterior, especificando para a segunda e terceira linhas uma largura em números fracionários:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> </div> #parent { display: grid; grid-template-rows: 1fr 0.5fr 2.5fr; border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Vamos usar na propriedade grid-template-rows a função repeat(), que informará ao contêiner que todas as três linhas devem ter a mesma largura:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> </div> #parent { display: grid; grid-template-rows: repeat(3, 1fr); border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Agora, vamos modificar o exemplo anterior para que às três linhas idênticas seja adicionada uma quarta, que ocupará duas frações do contêiner:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: repeat(3, 1fr) 2fr; border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Vamos definir para as duas primeiras linhas uma largura de uma fração do contêiner, e para as duas últimas linhas - duas frações:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: repeat(2, 1fr) repeat(2, 2fr); border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Agora, vamos definir a largura das linhas combinando valores especificados usando a função repeat() e unidades livres fr:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> #parent { display: grid; grid-template-rows: repeat(2, 1fr) 3fr repeat(2, 2fr); border: 2px solid #696989; padding: 10px; width: 400px; height: 300px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Também na função repeat() podemos especificar o valor auto-fill, que preencherá nosso contêiner com linhas idênticas da largura desejada:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: repeat(auto-fill, 50px); border: 2px solid #696989; padding: 10px; width: 400px; height: 200px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

É muito conveniente usar junto com auto-fill a função minmax, que define um intervalo de largura das linhas de um valor mínimo a um valor máximo. Se a largura do contêiner não couber todas as linhas, algumas delas se moverão para uma nova linha, enquanto as linhas na linha serão distribuídas uniformemente nela. Vamos modificar o exemplo anterior, especificando nele a função minmax:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: repeat(auto-fill, minmax(50px, 1fr)); border: 2px solid #696989; padding: 10px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Agora, vamos especificar a propriedade auto-fit, cuja diferença para auto-fill está no fato de que ela ajusta a quantidade de linhas à largura disponível do contêiner, expandindo ou comprimindo-as:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: repeat(auto-fit, minmax(100px, 1fr)); border: 2px solid #696989; padding: 10px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Também, junto com fr, podemos usar valores em %, que também definem que parte do contêiner a linha ocupará. Neste caso, primeiro será calculado o tamanho da linha em %, e o espaço livre restante será dividido em frações:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> </div> #parent { display: grid; grid-template-rows: 50% 1fr 2fr 30%; border: 2px solid #696989; padding: 10px; width: 400px; height: 400px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Vamos usar juntas as propriedades grid-template-columns e grid-template-rows:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> </div> #parent { display: grid; grid-template-rows: 1fr 1fr 1fr; grid-template-columns: 1fr 1fr 1fr; border: 2px solid #696989; padding: 10px; width: 400px; height: 400px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Vamos usar as propriedades grid-template-columns e grid-template-rows criar uma tabela de nove células, dispostas em três linhas. Porém, a segunda e a terceira linhas terão a mesma largura, e cada coluna - uma largura diferente:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> </div> #parent { display: grid; grid-template-rows: 60px 1fr 60px; grid-template-columns: 20% 1fr 15%; border: 2px solid #696989; padding: 10px; width: 400px; height: 400px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Exemplo

Agora, na tabela do exemplo anterior, vamos fazer a linha superior ter uma largura de duas frações, e a primeira coluna - meia fração:

<div id="parent"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> </div> #parent { display: grid; grid-template-rows: 2fr 1fr 1fr; grid-template-columns: 0.5fr 1fr 1fr; border: 2px solid #696989; padding: 10px; width: 400px; height: 400px; } #parent > div { padding: 10px; border: 1px solid #696989; }

:

Veja também

  • a propriedade grid-template-columns,
    que define a quantidade e a largura das colunas no grid
  • a propriedade grid-auto-rows,
    que define a quantidade e a largura das linhas no grid implícito
bydeenesfrptru