Propriedade align-items

A propriedade align-items define o alinhamento dos elementos ao longo do eixo transversal para blocos flex e ao longo do eixo vertical para grids. Aplica-se ao elemento pai.

Sintaxe

cssseletor {
  align-items: flex-start | flex-end | center | baseline | stretch;
}

Valores

Valor Descrição
flex-start Os blocos são pressionados para o início do eixo transversal (vertical).
flex-end Os blocos são pressionados para o final do eixo transversal (vertical).
center Os blocos ficam centralizados no eixo transversal (vertical).
baseline Os elementos são alinhados de acordo com sua linha de base. A linha de base é uma linha imaginária que passa pela borda inferior dos caracteres sem considerar os descendentes, por exemplo, como nas letras 'p' e 'y'.
stretch Os blocos são esticados, ocupando todo o espaço disponível ao longo do eixo transversal, mas ainda são considerados min-width e max-width, se definidos. Se a largura e a altura forem definidas para os elementos - stretch será ignorado.

Valor padrão: stretch.

Exemplo . Valor stretch

Agora o eixo principal está direcionado da esquerda para a direita, e ao longo do eixo transversal os elementos são esticados para toda a altura:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: stretch;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor stretch + dimensões do elemento

Agora a largura e a altura estão definidas para os elementos, portanto o valor stretch para a propriedade align-items será ignorado:

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

Результат:

Exemplo . Valor flex-start sem dimensões do elemento

Agora os elementos serão pressionados para o topo:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: flex-start;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  border: 1px solid #696989;
}

Результат:

Exemplo . Valor flex-start + dimensões do elemento

Agora os elementos continuarão pressionados para o topo, mas terão largura e altura definidas:

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

Результат:

Exemplo . Valor flex-end + dimensões do elemento

Agora os elementos serão pressionados para a parte inferior:

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

Результат:

Exemplo . Valor center + dimensões do elemento

Agora os elementos ficarão centralizados no eixo transversal (neste caso, verticalmente):

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

Результат:

Exemplo . Valor center, elementos de tamanhos diferentes

Agora os elementos têm tamanhos diferentes em altura (agora eles são expandidos pelo texto, mas também pode-se definir height), a largura é a mesma para todos, pois a propriedade width está definida:

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

Результат:

Exemplo . Valor baseline, elementos de tamanhos diferentes

E assim é o alinhamento pela linha de base:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: flex;
  align-items: baseline;
  flex-direction: row;
  border: 1px solid #696989;
}
#parent > div {
  width: 130px;
  line-height: 1;
  border: 1px solid #696989;
}

Результат:

Exemplo . Alinhamento pelo início do eixo vertical no grid

Vamos alinhar nossos elementos dentro das células pelo início do eixo vertical:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: flex-start;
  grid-template-columns: 100px 100px;
  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;
}

Результат:

E agora vamos dar uma olhada no nosso grid no depurador do navegador:

Exemplo . Alinhamento pelo centro do eixo vertical no grid

E agora vamos alinhar nossos elementos nas células pelo centro do eixo vertical:

html<div id="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: center;
  grid-template-columns: 100px 100px;
  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;
}

Результат:

Vamos ver a exibição do grid no depurador:

Exemplo . Alinhamento pelo final do eixo vertical no grid

Vamos alterar novamente o alinhamento dos elementos, desta vez pelo final do eixo vertical:

html<div id="parent">
  <div id="elem1">1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
</div>
css#parent {
  display: grid;
  align-items: end;
  grid-template-columns: 100px 100px;
  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;
}
#elem1 {
  
}

Результат:

E agora vamos ver como fica nosso grid no depurador:

Veja também

  • a propriedade flex-direction,
    que define a direção dos eixos dos blocos flex
  • a propriedade justify-content,
    que define o alinhamento ao longo do eixo principal
  • a propriedade align-items,
    que define o alinhamento ao longo do eixo transversal
  • a propriedade flex-wrap,
    que define a quebra de linha dos blocos flex
  • a propriedade flex-flow,
    abreviação para flex-direction e flex-wrap
  • a propriedade order,
    que define a ordem dos blocos flex
  • a propriedade align-self,
    que define o alinhamento de um único bloco
  • a propriedade flex-basis,
    que define o tamanho de um bloco flex específico
  • a propriedade flex-grow,
    que define a taxa de crescimento dos blocos flex
  • a propriedade flex-shrink,
    que define a taxa de redução dos blocos flex
  • a propriedade flex,
    abreviação para flex-grow, flex-shrink e flex-basis