Propriedade align-self

A propriedade align-self define o alinhamento ao longo do eixo transversal para um bloco flex individual e ao longo do eixo vertical para um elemento individual em um grid. Essencialmente, esta propriedade representa a propriedade align-items, mas para um bloco específico.

Sintaxe

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

Valores

Valor Descrição
flex-start O bloco é alinhado ao início do eixo transversal.
flex-end O bloco é alinhado ao final do eixo transversal.
center O bloco é centralizado no eixo transversal.
baseline O bloco é alinhado 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', 'q', 'y', 'g'.
stretch O bloco é esticado, 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 o elemento - stretch será ignorado.
auto O bloco será alinhado conforme definido na propriedade align-items.

Valor padrão: auto.

Exemplo . Valor stretch

Neste exemplo, o valor flex-start foi definido para todos os blocos (propriedade align-items), e para o terceiro bloco - align-self com o valor stretch:

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

Результат:

Exemplo . Valor flex-end

Neste exemplo, o valor flex-start foi definido para a propriedade align-items para todos os blocos, e para o terceiro bloco - align-self com o valor flex-end:

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

Результат:

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

Vamos definir o alinhamento para o primeiro elemento no início do eixo vertical:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#parent {
  display: grid;
  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;
}
#elem1 {
  align-self: start;
}

Результат:

Exemplo . Alinhamento no centro do eixo vertical no grid

Vamos definir o alinhamento do primeiro elemento no centro do eixo vertical:

html<div id="parent">
  <div id="elem1">1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
</div>
css#parent {
  display: grid;
  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;
}
#elem1 {
  align-self: center;
}

Результат:

Exemplo . Alinhamento no final do eixo vertical no grid

Vamos definir o alinhamento do nosso primeiro elemento no grid para o final do eixo vertical:

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

Результат:

Veja também

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