Свойство align-self

Свойството align-self задава подравняване по напречната ос за отделен flex-блок и по вертикалната ос за отделен елемент в грид. По същество това свойство представлява свойството align-items, но за конкретен блок.

Синтаксис

cssселектор {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

Стойности

Стойност Описание
flex-start Блокът е притиснат към началото на напречната ос.
flex-end Блокът е притиснат към края на напречната ос.
center Блокът е позициониран в центъра на напречната ос.
baseline Блокът се подравнява по своята базова линия. Базовата линия е въображаема линия, минаваща по долния ръб на символите без да се вземат предвид провисванията, например като при буквите 'p', 'q', 'y', 'g'.
stretch Блокът е разпънат, заемайки цялото налично пространство по напречната ос, като въпреки това се вземат предвид min-width и max-width, ако са зададени. Ако са зададени ширина и височина за елемента - stretch ще бъде игнориран.
auto Блокът ще бъде подравнен както е зададено в свойството align-items.

Стойност по подразбиране: auto.

Пример . Стойност stretch

В този пример на всички блокове е зададена стойност flex-start (свойство align-items), а на третия блок - align-self със стойност 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;
}

Результат:

Пример . Стойност flex-end

В този пример за свойството align-items на всички блокове е зададена стойност flex-start, а на третия блок - align-self със стойност 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;
}

Результат:

Пример . Подравняване по началото на вертикалната ос в грид

Нека зададем подравняване за първия елемент по началото на вертикалната ос:

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;
}

Результат:

Пример . Подравняване по центъра на вертикалната ос в грид

Нека зададем подравняване на първия елемент по центъра на вертикалната ос:

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;
}

Результат:

Пример . Подравняване по края на вертикалната ос в грид

Нека зададем подравняване на нашия първи елемент в грида по края на вертикалната ос:

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;
}

Результат:

Вижте също

  • свойство flex-direction,
    което задава посоката на осите на flex блоковете
  • свойство justify-content,
    което задава подравняване по главната ос
  • свойство align-items,
    което задава подравняване по напречната ос
  • свойство flex-wrap,
    което задава многолинейност на flex блоковете
  • свойство flex-flow,
    съкращение за flex-direction и flex-wrap
  • свойство order,
    което задава реда на flex блоковете
  • свойство flex-basis,
    което задава размера на конкретен flex блок
  • свойство flex-grow,
    което задава "алчността" на flex блоковете
  • свойство flex-shrink,
    което задава свиваемостта на flex блоковете
  • свойство flex,
    съкращение за flex-grow, flex-shrink и flex-basis