Размер на флекс елемента по главната ос

Свойствата width и height задават ширина и височина на флекс елемента независимо от посоката на осите. Тоест, ако оста е хоризонтална, то width ще задава ширина, но ако оста е вертикална, то width все още ще задава ширина. Понякога такова поведение не е удобно.

Във флекс модела съществува специално свойство flex-basis, което задава размера на елемента по главната ос. Това означава, че ако главната ос е хоризонтална - това свойство ще задава ширината на елементите, а ако е вертикална - то височината. Това свойство трябва да се задава на самите flex елементи, а не на техния родител. Нека разгледаме примери.

Нека сега главната ос е хоризонтална, а flex-basis има стойност 50px. В този случай ширината на елементите ще бъде 50px:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
</div>
css.parent {
  display: flex;
  flex-direction: row; /* оста е хоризонтална */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;   /* размер на елемента */
  border: 1px solid green;
}

Результат:

Нека сега обърнем оста, без да променяме стойността на свойството flex-basis. В този случай вече височината на елементите ще бъде 50px:

html<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
</div>
css.parent {
  display: flex;
  flex-direction: column; /* оста е вертикална */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;
  border: 1px solid green;
}

Результат:

Задание 1

Направете 5 флекс-блока. Задайте им ширина по главната ос от 100px. Наблюдавайте поведението на блоковете по различни оси.

Задание 2

Ако оста е хоризонтална и на блока е зададено свойство flex-basis и едновременно свойство width, то flex-basis ще има приоритет. Проверете това.

Задание 3

Ако оста е вертикална и на блока е зададено свойство flex-basis и едновременно свойство height, то flex-basis ще има приоритет. Проверете това.