Flex elemento dydis pagrindinėje ašyje

Savybės width ir height nustato flex elemento plotį ir aukštį nepriklausomai nuo ašių krypties. Tai yra, jei ašis horizontali, tai width nustatys plotį, bet jei ašis vertikali, tai width vis tiek nustatys plotį. Kartais toks elgesys ne patogus.

Flex modelyje egzistuoja speciali savybė flex-basis, kuri nustato elemento dydį pagrindinėje ašyje. Tai reiškia, kad jei pagrindinė ašis horizontali - ši savybė bus nustatys elementų plotį, o jei vertikali - tai aukštį. Ši savybė turi būti nustatyta pačiems flex elementams, o ne jų tėviniam elementui. Pažiūrėkime pavyzdžiais.

Tarkime, pagrindinė ašis yra horizontali, o flex-basis reikšmė yra 50px. Šiuo atveju elementų plotis bus 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; /* ašis horizontali */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;   /* elemento dydis */
  border: 1px solid green;
}

Результат:

Dabar apverskime ašį, nekeisdami savybės flex-basis reikšmės. Šiuo atveju jau elementų aukštis bus 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; /* ašis vertikali */
  width: 300px;
  height: 300px;
  border: 1px solid red;
}
.child {
  flex-basis: 50px;
  border: 1px solid green;
}

Результат:

Задание 1

Sukurkite 5 flex-blokus. Nustatykite jų plotį pagrindinėje ašyje į 100px. Stebėkite blokų elgesį skirtingų ašių atžvilgiu.

Задание 2

Jei ašis horizontali ir blokui nustatyta savybė flex-basis ir kartu savybė width, tai flex-basis turės pirmenybę. Patikrinkite tai.

Задание 3

Jei ašis vertikali ir blokui nustatyta savybė flex-basis ir kartu savybė height, tai flex-basis turės pirmenybę. Patikrinkite tai.