Величина флекс елемента дуж главне осе

Својства 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 ће имати приоритет. Проверите то.