# Флекс элементы на CSS

Кроме изученных нами типов блочных моделей есть еще одна - флекс элементы. Для того, чтобы получить такие элементы, нужно родителю этих элементов написать свойство `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; }`

:

←→
↑