Флекс элементы на 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; }

: