CSS flexbox

Всем привет и давайте перейдем к делу. Модуль flexbox включает в себя целую серию новых свойств и значений CSS. Рассмотрим следующий код:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>
      Работа с модулем flexbox
    </title>
  </head>
  <body>
    <style>
      .children
      {
        border: 1px solid #00f;
      }

    </style>
    <div class="main">
      <div class="children">
        Элемент 1
      </div>
      <div class="children">
        Элемент 2
      </div>
      <div class="children">
        Элемент 3
      </div>
      <div class="children">
        Элемент 4
      </div>
    </div>
  </body>
</html>
Здесь у нас указан родительский блок с классом main и его дочерние с классами children. Все элементы являются блочными и поэтому занимают всю ширину и идут в колонку. Допустим мы хотим расположить эти блоки в одну линию. И для этого мы можем родительскому блоку прописать:

.main{
  display:flex;
}
и все наши блоки выровняются в одну линию. Что же здесь произошло? А произошло следующее, после того как мы главному элементу прописали свойство display:flex;, все его дочерние элементы стали flex-элементами. Ширина flex-элемента зависит от его содержимого, причем не важно блочный это или встроенный элемент. Элементы также расположены последовательно друг за другом, как если бы мы задали им обтекание по левому краю(float:left;), только здесь на не нужно заботится о схлопывании границ и очистке обтекания. Все, теперь мы можем проводить различного рода манипуляции над flex-элементами с помощью следующих свойств: 1. justify-content - c помощью данного свойства мы можем выравнивать наши элементы по левому и правому краю, по центру, по краям, по всей ширине.

justify-content:flex-start;/*По левому краю */
justify-content:flex-end;/*По правому краю */
justify-content:center;/*По центру*/
justify-content:space-between;/*По краям */
justify-content:space-around;/*По ширине*/
Допустим мы хотим выровнять все наши flex -элементы по краям:

.main{
  display:flex;
  justify-content: space-between;
}
как видите первый и последний элементы прижались к краям. Едем дальше. 2. align-items - данное свойство выравнивает flex-элементы по вертикали: Чтобы его лучше рассмотреть зададим родительскому элементу высоту 200px:

.children{
  border:1px solid #00f;
  width:25%;
}
.main{
  display:flex;
  height:200px;
}
и далее рассмотрим значения которые может принимать свойство align-items: stretch - растягивает flex-элемент по всей высоте контейнера(значение по умолчанию) align-items: stretch; flex-start - элементы прижимаются к верху контейнера align-items: flex-start; flex-end - элементы прижимаются к низу контейнера align-items: flex-end; center - элементы центрируются по вертикали align-items: center; center - элементы центрируются по вертикали align-items: center; baseline - элементы выравниваются по базовой линии, то есть если у flex-элементов не задана высота, то она вычисляется по его содержимому , пример:

.children{
  border:1px solid #00f;
  width:25%;
}
.main{
  display:flex;
  height:200px;
  align-items: baseline;
}
Если же мы хотим определить выравнивание для определенных flex-элементов, для этого существует свойство align-self:

.children{
  border:1px solid #00f;
  width:25%;
}
.children:nth-of-type(even){
  align-self:center;
}
.main{
  display:flex;
  height:200px;
}
как видите здесь мы отцентрировали по вертикали все четные элементы, данное свойство имеет такие же значения как и align-items, поэтому мы их повторно рассматривать не будем. 3. flex-direction - определяет как flex-элементы будут располагаться относительно друг друга. flex-direction:row; элементы располагаются слева на право относительно друг друга, данное значение идет по умолчани. flex-direction:row-reverse; элементы расположены справа налево. flex-direction:column; элементы расположены сверху вниз. flex-direction:column-reverse; элементы расположены снизу вверх Пример:

.children{
  border:1px solid #00f;
  width:25%;
}
.main{
  display:flex;
  height:200px;
  flex-direction:column-reverse;
}
4.flex-wrap - данное свойство отвечает за многострочность элементов и может принимать следующее значение: nowrap - flex-элементы располагаются в одну строку без переносов(значение по умолчанию) flex-wrap:nowrap; wrap - flex-элементы помещаются в несколько рядов слева направо, если не помещаются в строке flex-wrap:wrap; wrap-reverse - flex-элементы помещаются в обратном порядке справа налево причем перенос происходит вверх flex-wrap:wrap-reverse; пример:

.children{
  border:1px solid #00f;
  width:25%;
}
.main{
  display:flex;
  height:200px;
  flex-wrap:wrap-reverse;
}
5. order - c помощью данного свойства мы можем переставлять flex-элементы в начало или конец:

.first_element{
  order:-1;
}
значение -1 переставит элемент с классом first_element в самое начало, а 1 в конец. Пример:

<style>
  .children
  {
    border: 1px solid #00f;
    width: 25%;
  }
  .first_element
  {
    order: 1;
  }
  .main
  {
    display: flex;
    height: 200px;
  }
</style>
<div class="main">
  <div class="children">
    Элемент 1
  </div>
  <div class="children last_element">
    Элемент 2
  </div>
  <div class="children" >
    Элемент
  </div>
  <div class="children" >
    Элемент 4
  </div>
</div>
здесь мы второй элемент переставили в самый конец. 6.flex-basis - указывается значение ширины flex-элемента в px, em или %.

.children{
  border:1px solid #00f;
  flex-basis: 25%;
}
.main{
  display:flex;
}
тут мы указали ширину для каждого дочернего элемента 25%. И напоследок мы рассмотрим свойство flex c помощью которого мы можем указать элементу его базовую ширину и трансформацию, выглядит это так: flex:0 1 25%; где 0 - коэффициент увеличения шириины, 1 - коэффициент уменьшения ширины, 25% - ширина элемента. Пример:

.children{
  border:1px solid #00f;
  flex:0 1 25%;
}
.main{
  display:flex;
}
На этом дорогие друзья данная статья подошла к концу, мы рассмотрели далеко не все возможности работы с модулем flexbox, только самое основное и часто используемое. Надеюсь данная статья была для вас полезна и содержательна. А я желаю вам успехов и удачи! Пока!

04.03.2023

99
A B i U S JS

PHP HTML CSS
Чат
    Для входа только имэйл или имя и апроль
    Можно сменить аватар
    Имэйл Ваше имя
    Пароль