Крім вивчених нами типів блокових моделей
є ще одна – флекс елементи. Для того,
щоб отримати такі елементи, потрібно батьку
цих елементів написати властивість display
в значенні flex. Сам батько залишиться
блоковим елементом, а ось його нащадки стануть
флекс елементами.
Флекс елементи, подібно до блокових можуть мати
ширину та висоту, margin и padding.
Однак, на відміну від блокових, за замовчуванням
флекс елементи вишиковуються в ряд усередині
свого батька.
Давайте спробуєм:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: flex; /* нащадки будуть флекс елементами */
width: 300px;
height: 200px;
border: 1px solid red;
}
.child {
width: 50px;
height: 50px;
border: 1px solid green;
}
:
Висота батька
Якщо батькові флекс елементів не задана висота, то по висоті він розтягуватиметься своїм вмістом, тобто висотою нащадків:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: flex;
width: 300px;
border: 1px solid red;
}
.child {
width: 50px;
height: 50px;
border: 1px solid green;
}
:
Ширина батька
Якщо батькові флекс елементів не задана ширина, то по ширині він займе все доступне місце:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: flex;
border: 1px solid red;
}
.child {
width: 50px;
height: 50px;
border: 1px solid green;
}
:
Рядково-блоковий батько
Замість значення flex для властивості display
батькові можна поставити значення inline-flex.
У цьому випадку цей батько поводитиметься,
як рядково-блоковий елемент.
Наприклад, якщо не задати ширину батька, то його ширина сформується шириною нащадків:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: inline-flex;
border: 1px solid red;
}
.child {
width: 50px;
height: 50px;
border: 1px solid green;
}
:
Відступи padding батька
Батькові можна задати відступи padding:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: inline-flex;
padding: 10px;
border: 1px solid red;
}
.child {
width: 50px;
height: 50px;
border: 1px solid green;
}
:
Відступи margin нащадкам
Флекс елементам можна задати відступи margin:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
</div>
.parent {
display: inline-flex;
border: 1px solid red;
}
.child {
margin: 10px;
width: 50px;
height: 50px;
border: 1px solid green;
}
: