Propriedade justify-content

A propriedade justify-content define o alinhamento dos elementos ao longo do eixo principal para contêineres flex e ao longo do eixo horizontal para grids. Aplica-se ao elemento pai.

Sintaxe

cssseletor {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

Valores

Valor Descrição
flex-start Os blocos são alinhados no início do eixo principal (horizontal).
flex-end Os blocos são alinhados no final do eixo principal (horizontal).
center Os blocos são centralizados ao longo do eixo principal (horizontal).
space-between Os blocos são distribuídos uniformemente ao longo do eixo principal (horizontal), sendo que o primeiro elemento é alinhado no início do eixo e o último no final.
space-around Os blocos são distribuídos ao longo do eixo principal (horizontal), sendo que o espaço entre o primeiro bloco e o início do eixo, e entre o último bloco e o final do eixo, é igual ao espaço entre os blocos.
No entanto, eles não são iguais, como poderia parecer: os espaços são somados e entre dois blocos a distância é duas vezes maior do que entre um bloco e o início/final do eixo.

Valor padrão: flex-start.

Exemplo . Valor flex-start

Agora o eixo está direcionado da esquerda para a direita (isso é feito por flex-direction: row), e os blocos estão alinhados no lado esquerdo:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: flex-start;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor flex-end

Neste exemplo, o eixo também está direcionado da esquerda para a direita, mas os blocos estão alinhados no lado direito, pois foi definido justify-content com o valor flex-end:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: flex-end;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor center

Agora os blocos ficarão centralizados independentemente da direção do eixo principal:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: center;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor space-between

Os blocos são distribuídos uniformemente ao longo do eixo principal, sendo que o primeiro elemento é alinhado no início do eixo e o último no final:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: space-between;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor space-around

Os blocos são distribuídos ao longo do eixo principal, sendo que o espaço entre o primeiro bloco e o início do eixo, e entre o último bloco e o final do eixo, é igual ao espaço entre os blocos. No entanto, os espaços são somados e entre dois blocos a distância é duas vezes maior do que entre um bloco e o início/final do eixo:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: space-around;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor center. Eixo para baixo

Vamos mudar a direção do eixo principal, definindo flex-direction com o valor column:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: center;
  flex-direction: column;
  height: 400px;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor space-between. Eixo para baixo

Agora os blocos serão distribuídos uniformemente na vertical:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  justify-content: space-between;
  flex-direction: column;
  height: 400px;
  border: 1px solid #696989;
}
#parent > div {
  width: 100px;
  height: 50px;
  border: 1px solid #696989;
}

Результат:

Exemplo . Alinhamento no início do eixo horizontal (linhas) no grid

Vamos definir o alinhamento para nossos elementos no início do eixo horizontal:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  justify-content: start;
  grid-template-columns: 100px 100px;
  grid-template-rows: repeat(3, 1fr);
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}

Результат:

Exemplo . Alinhamento no centro do eixo horizontal no grid

Agora vamos definir o alinhamento para nossos elementos no centro do eixo horizontal:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  justify-content: center;
  grid-template-columns: 100px 100px;
  grid-template-rows: repeat(3, 1fr);
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}

Результат:

Exemplo . Alinhamento no final do eixo horizontal no grid

Vamos definir o alinhamento para nossos elementos no final do eixo horizontal:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  justify-content: end;
  grid-template-columns: 100px 100px;
  grid-template-rows: repeat(3, 1fr);
  gap: 10px;
  padding: 10px;
  border: 2px solid #696989;
  height: 200px;
  width: 400px;
}
#parent > div {
  gap: 10px;
  padding: 10px;
  box-sizing: border-box;
  border: 1px solid #696989;
}

Результат:

Veja também

  • a propriedade flex-direction,
    que define a direção dos eixos em contêineres flex
  • a propriedade align-items,
    que define o alinhamento ao longo do eixo transversal
  • a propriedade flex-wrap,
    que define a quebra de linha em contêineres flex
  • a propriedade flex-flow,
    atalho para flex-direction e flex-wrap
  • a propriedade order,
    que define a ordem dos elementos flex
  • a propriedade align-self,
    que define o alinhamento de um único elemento
  • a propriedade flex-basis,
    que define o tamanho inicial de um elemento flex
  • a propriedade flex-grow,
    que define a capacidade de crescimento de elementos flex
  • a propriedade flex-shrink,
    que define a capacidade de redução de elementos flex
  • a propriedade flex,
    atalho para flex-grow, flex-shrink e flex-basis