Flexbox - Краткое руководство

Cвосходящий STyle Sheets (CSS) - это простой язык дизайна, предназначенный для упрощения процесса создания презентабельных веб-страниц. CSS обрабатывает внешний вид веб-страницы.

Используя CSS, вы можете контролировать цвет текста, стиль шрифтов, расстояние между абзацами, размер и расположение столбцов, используемые фоновые изображения или цвета, дизайн макета, варианты отображения для разных устройств и размеров экрана а также множество других эффектов.

Чтобы определить положение и размеры ящиков в CSS, вы можете использовать один из доступных режимов макета -

  • The block layout - Этот режим используется при верстке документов.

  • The inline layout - Этот режим используется при разметке текста.

  • The table layout - Этот режим используется при раскладке таблиц.

  • The table layout - Этот режим используется для позиционирования элементов.

Все эти режимы используются для выравнивания определенных элементов, таких как документы, текст, таблицы и т. Д., Однако ни один из них не обеспечивает полного решения для компоновки сложных веб-сайтов. Первоначально это обычно делается с использованием комбинации плавающих элементов, позиционированных элементов и макета таблицы (часто). Но поплавки позволяют только горизонтально расположить коробки.

Что такое Flexbox?

В дополнение к вышеупомянутым режимам, CSS3 предоставляет другой режим макета - Flexible Box, обычно называемый Flexbox.

Используя этот режим, вы можете легко создавать макеты для сложных приложений и веб-страниц. В отличие от поплавков, макет Flexbox дает полный контроль над направлением, выравниванием, порядком и размером ящиков.

Особенности Flexbox

Ниже приведены примечательные особенности макета Flexbox.

  • Direction - Вы можете расположить элементы на веб-странице в любом направлении, например слева направо, справа налево, сверху вниз и снизу вверх.

  • Order - Используя Flexbox, вы можете изменить порядок содержимого веб-страницы.

  • Wrap - В случае несоответствия места для содержимого веб-страницы (в одну строку) вы можете перенести их на несколько строк (как по горизонтали), так и по вертикали.

  • Alignment - Используя Flexbox, вы можете выровнять содержимое веб-страницы относительно их контейнера.

  • Resize - Используя Flexbox, вы можете увеличивать или уменьшать размер элементов на странице, чтобы они соответствовали доступному пространству.

Поддерживающие браузеры

Ниже приведены браузеры, поддерживающие Flexbox.

  • Chrome 29+
  • Firefox 28+
  • Internet Explorer 11+
  • Opera 17+
  • Safari 6.1+
  • Android 4.4+
  • iOS 7.1+

Чтобы использовать Flexbox в вашем приложении, вам необходимо создать / определить гибкий контейнер с помощью display свойство.

Usage -

display: flex | inline-flex

Это свойство принимает два значения

  • flex - Создает гибкий контейнер на уровне блока.

  • inline-flex - Создает встроенный гибкий контейнерный бокс.

Теперь посмотрим, как использовать display недвижимость с примерами.

Flex

При передаче этого значения в свойство display будет создан гибкий контейнер на уровне блока. Он занимает всю ширину родительского контейнера (браузера).

В следующем примере показано, как создать гибкий контейнер на уровне блока. Здесь мы создаем шесть коробок разного цвета и использовали гибкий контейнер для их хранения.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:flex;
      }
      .box{
         font-size:35px;
         padding:15px;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

Поскольку мы дали значение flex к display свойство, контейнер использует ширину контейнера (браузера).

Вы можете наблюдать это, добавив рамку к контейнеру, как показано ниже.

.container {
   display:inline-flex;
   border:3px solid black;
}

Это даст следующий результат -

Встроенный гибкий

При передаче этого значения в displayбудет создан гибкий контейнер встроенного уровня. Он просто занимает место, необходимое для содержания.

В следующем примере показано, как создать встроенный гибкий контейнер. Здесь мы создаем шесть блоков разного цвета и использовали контейнер inline-flex для их хранения.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
      }
      .box{
         font-size:35px;
         padding:15px;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

Поскольку мы использовали встроенный гибкий контейнер, ему просто потребовалось пространство, необходимое для обертывания его элементов.

В flex-direction Свойство используется для указания направления, в котором необходимо разместить элементы гибкого контейнера (flex-items).

usage -

flex-direction: row | row-reverse | column | column-reverse

Это свойство принимает четыре значения -

  • row - Располагает элементы контейнера по горизонтали слева направо.

  • row-reverse - Располагает элементы контейнера по горизонтали справа налево.

  • column - Располагает элементы контейнера по вертикали слева направо.

  • column-reverse - Располагает элементы контейнера по вертикали справа налево.

Теперь мы рассмотрим несколько примеров, чтобы продемонстрировать использование direction свойство.

строка

При передаче этого значения в direction , элементы контейнера расположены горизонтально слева направо, как показано ниже.

В следующем примере демонстрируется результат передачи значения rowв свойство flex-direction . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.row.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

обратный ряд

При передаче этого значения в direction , элементы контейнера расположены горизонтально справа налево, как показано ниже.

В следующем примере демонстрируется результат передачи значения row-reverseв свойство flex-direction . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.row-reverse.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row-reverse;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

столбец

При передаче этого значения в direction свойства, элементы контейнера расположены вертикально сверху вниз, как показано ниже.

В следующем примере демонстрируется результат передачи значения columnв свойство flex-direction . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.column.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:column;
      }
   </style>
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

столбец-обратный

При передаче этого значения в direction , элементы контейнера расположены вертикально снизу вверх, как показано ниже.

В следующем примере демонстрируется результат передачи значения column-reverseв свойство flex-direction . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.column-reverse.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:column-reverse;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

Как правило, в случае нехватки места для контейнера остальные гибкие элементы будут скрыты, как показано ниже.

В flex-wrap Свойство используется для указания элементов управления, является ли гибкий контейнер однострочным или многострочным.

usage -

flex-wrap: nowrap | wrap | wrap-reverse
flex-direction: column | column-reverse

Это свойство принимает следующие значения -

  • wrap - В случае нехватки места для них элементы контейнера (флекситемы) будут сворачиваться в дополнительные гибкие линии сверху вниз.

  • wrap-reverse - В случае нехватки места для них элементы контейнера (flex-items) будут сворачиваться в дополнительные гибкие линии снизу вверх.

Теперь посмотрим, как использовать wrap собственности, с примерами.

заворачивать

При передаче значения wrap к собственности flex-wrapэлементы контейнера расположены горизонтально слева направо, как показано ниже.

В следующем примере демонстрируется результат передачи значения wrapк свойству flex-wrap . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.row.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

обертка-реверс

При передаче значения wrap-reverse к собственности flex-wrapэлементы контейнера расположены горизонтально слева направо, как показано ниже.

В следующем примере демонстрируется результат передачи значения wrap-reverseк свойству flex-wrap . Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.row.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap-reverse;
      }
   </style>
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

обернуть (столбец)

При передаче значения wrap к собственности flex-wrap и ценность column к собственности flex-directionэлементы контейнера расположены горизонтально слева направо, как показано ниже.

В следующем примере демонстрируется результат передачи значения wrap к flex-wrapсвойство. Здесь мы создаем шесть блоков разных цветов со значением направления гибкости.column.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:column;
         flex-wrap:wrap;
         height:100vh;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

wrap-reverse (столбец)

При передаче значения wrap-reverse к собственности flex-wrap и ценность column к собственности flex-directionэлементы контейнера расположены горизонтально слева направо, как показано ниже.

В следующем примере демонстрируется результат передачи значения wrap-reverseк свойству flex-wrap . Здесь мы создаем шесть блоков разного цвета и со значением направления изгиба.column.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
         width:100px;
      }
      .container{
         display:flex;
         border:3px solid black;
         flex-direction:column;
         flex-wrap:wrap-reverse;
         height:100vh;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

Часто вы можете заметить лишнее пространство, оставшееся в контейнере после расположения гибких элементов, как показано ниже.

Использование свойства justify-content, вы можете выровнять содержимое по главной оси, распределив дополнительное пространство, как задумано. Вы также можете настроить выравнивание элементов гибкости, если они выходят за пределы линии.

usage -

justify-content: flex-start | flex-end | center | space-between | space-around| space-evenly;

Это свойство принимает следующие значения -

  • flex-start - Элементы гибкости помещаются в начало контейнера.

  • flex-end - Элементы гибкости помещаются в конец контейнера.

  • center - Гибкие элементы размещаются в центре контейнера, где дополнительное пространство равномерно распределяется в начале и в конце гибких элементов.

  • space-between - Дополнительное пространство равномерно распределяется между flex-элементами.

  • space-around - Дополнительное пространство равномерно распределяется между гибкими элементами, так что пространство между краями контейнера и его содержимым составляет половину пространства между гибкими элементами.

Теперь посмотрим, как использовать свойство justify-content, на примерах.

гибкий старт

При передаче этого значения в свойство justify-content, гибкие элементы помещаются в начало контейнера.

В следующем примере демонстрируется результат передачи значения flex-start к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий конец

При передаче этого значения в свойство justify-content, гибкие элементы помещаются в конец контейнера.

В следующем примере демонстрируется результат передачи значения flex-end к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

центр

При передаче этого значения в свойство justify-content, гибкие элементы размещаются в центре контейнера, где дополнительное пространство равномерно распределяется в начале и в конце гибких элементов.

В следующем примере демонстрируется результат передачи значения center к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

пространство между

При передаче этого значения в свойство justify-content, дополнительное пространство равномерно распределяется между гибкими элементами, так что пространство между любыми двумя гибкими элементами одинаково, а начало и конец гибких элементов касаются краев контейнера.

В следующем примере демонстрируется результат передачи значения space-between к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-between;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

пространство вокруг

При передаче этого значения в свойство justify-content, дополнительное пространство равномерно распределяется между гибкими элементами, так что пространство между любыми двумя гибкими элементами одинаково. Однако расстояние между краями контейнера и его содержимым (начало и конец гибких элементов) составляет половину пространства между гибкими элементами.

В следующем примере демонстрируется результат передачи значения space-around к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-around;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

равномерно

При передаче этого значения в свойство justify-content, дополнительное пространство равномерно распределяется между гибкими элементами, так что пространство между любыми двумя гибкими элементами одинаково (включая пространство до краев).

В следующем примере демонстрируется результат передачи значения space-evenly к justify-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         border:3px solid black;
         justify-content:space-evenly;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

В align-items свойство такое же, как justify content. Но здесь элементы были выровнены поперек перекрестного доступа (по вертикали).

Usage -

align-items: flex-start | flex-end | center | baseline | stretch;

Это свойство принимает следующие значения -

  • flex-start - Элементы гибкости были выровнены по вертикали в верхней части контейнера.

  • flex-end - Элементы гибкости были выровнены по вертикали в нижней части контейнера.

  • flex-center - Гибкие элементы были выровнены вертикально по центру контейнера.

  • stretch - Гибкие элементы были выровнены по вертикали так, чтобы они заполняли все вертикальное пространство контейнера.

  • baseline - Гибкие элементы были выровнены таким образом, что базовая линия их текста выровнялась по горизонтальной линии.

гибкий старт

При передаче этого значения в свойство align-items гибкие элементы выравнивались по вертикали в верхней части контейнера.

В следующем примере демонстрируется результат передачи значения flex-start к align-items свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий конец

При передаче этого значения в свойство align-items, гибкие элементы выравниваются по вертикали в нижней части контейнера.

В следующем примере демонстрируется результат передачи значения flex-end к align-items свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

центр

При передаче этого значения в свойство align-items, гибкие элементы выравниваются по вертикали в центре контейнера.

В следующем примере демонстрируется результат передачи значения flex-center к align-items свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

протяжение

При передаче этого значения в свойство align-items, гибкие элементы выровнены по вертикали, так что они заполняют все вертикальное пространство контейнера.

В следующем примере демонстрируется результат передачи значения stretch к align-items свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:stretch;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

исходный уровень

При передаче этого значения в свойство align-items, гибкие элементы выравниваются таким образом, что базовая линия их текста выравнивается по горизонтальной линии.

В следующем примере демонстрируется результат передачи значения baseline к align-items свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         align-items:baseline;
      }
   </style>
   
   <body>
      <div class = "container">
      <div class = "box box1">One</div>
      <div class = "box box2">two</div>
      <div class = "box box3">three</div>
      <div class = "box box4">four</div>
      <div class = "box box5">five</div>
      <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

В случае, если гибкий контейнер имеет несколько строк (когда, flex-wrap: wrap), свойство align-content определяет выравнивание каждой строки внутри контейнера.

Usage -

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

Это свойство принимает следующие значения -

  • stretch - Строки в содержимом растянутся, чтобы заполнить оставшееся пространство.

  • flex-start - Все строки в содержимом упакованы в начале контейнера.

  • flex-end - Все строки в контенте упакованы в конец контейнера.

  • center - Все строки в контенте упакованы в центре контейнера.

  • space-between - Лишнее пространство распределяется между строками равномерно.

  • space-around - Дополнительное пространство распределяется между строками равномерно с равным пространством вокруг каждой строки (включая первую и последнюю строки)

центр

При передаче этого значения в свойство align-content, все строки упаковываются в центр контейнера.

В следующем примере демонстрируется результат передачи значения center к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:43%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:center;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий старт

При передаче этого значения в свойство align-content, все строки упаковываются в начале контейнера.

В следующем примере демонстрируется результат передачи значения flex-start к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий конец

При передаче этого значения в свойство align-content, все строки упаковываются в конец контейнера.

В следующем примере демонстрируется результат передачи значения flex-end к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:flex-end;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

протяжение

При передаче этого значения в свойство align-content, линии растянутся, чтобы заполнить оставшееся пространство.

В следующем примере демонстрируется результат передачи значения stretch к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:stretch;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

пространство вокруг

При передаче этого значения в свойство align-contentдополнительное пространство распределяется между строками равномерно с равным пространством вокруг каждой строки (включая первую и последнюю строки).

В следующем примере демонстрируется результат передачи значения space-around к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:space-around;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

пространство между

При передаче этого значения в свойство align-content, дополнительное пространство распределяется между строками равномерно, причем первая строка будет вверху, а последняя - внизу контейнера.

В следующем примере демонстрируется результат передачи значения space-between к align-content свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta;}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .box{
         font-size:25px;
         padding:15px;
         width:40%;
      }
      .container{
         display:flex;
         height:100vh;
         flex-wrap:wrap;
         align-content:space-between;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

В flex-order Свойство используется для определения порядка элемента Flexbox.

Следующий пример демонстрирует orderсвойство. Здесь мы создаем шесть цветных блоков с метками один, два, три, четыре, пять, шесть, расположенных в том же порядке, и меняем их порядок в порядке один, два, пять, шесть, три, четыре, используя свойство flex-order.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:35px;
         padding:15px;
      }
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red; order:1}
      .box4{background:magenta; order:2}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:rows;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

- делаю заказ

Вы также можете присвоить порядку значения –ve, как показано ниже.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:35px;
         padding:15px;
      }
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red; order:-1}
      .box4{background:magenta; order:-2}
      .box5{background:yellow;}
      .box6{background:pink;}
      
      .container{
         display:inline-flex;
         border:3px solid black;
         flex-direction:row;
         flex-wrap:wrap;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкая основа

Мы используем flex-basis свойство, чтобы определить размер гибкого элемента по умолчанию перед распределением пространства.

В следующем примере демонстрируется использование свойства flex-base. Здесь мы создаем 3 цветных блока и устанавливаем их размер на 150 пикселей.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-basis:150px; }
      .box2{background:blue; flex-basis:150px;}
      .box3{background:red; flex-basis:150px;}
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий рост

Мы используем flex-grow свойство, чтобы установить flex-growфактор. В случае избытка места в контейнере он указывает, насколько должен вырасти конкретный flex-элемент.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-grow:10; flex-basis:100px; }
      .box2{background:blue; flex-grow:1; flex-basis:100px; }
      .box3{background:red; flex-grow:1; flex-basis:100px; }
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибко-усадочный

Мы используем свойство flex-shrink, которое используется для установки гибкости shrink-factor. Если в контейнере недостаточно места, он указывает, насколько должен сжиматься гибкий элемент.

<!doctype html>
<html lang = "en">
   <style>
      .box{
         font-size:15px;
         padding:15px;
      }
      .box1{background:green; flex-basis:200px; flex-shrink:10}
      .box2{background:blue; flex-basis:200px; flex-shrink:1}
      .box3{background:red; flex-basis:200px; flex-shrink:1}
      
      .container{
         display:flex;
         height:100vh;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
      </div>
   </body>
</html>

Это даст следующий результат -

сгибать

Существует сокращение для установки значений сразу для всех трех свойств; это называетсяflex. Используя это свойство, вы можете одновременно установить значения для гибкого роста, гибкого сжатия и гибкости. Вот синтаксис этого свойства.

.item {
   flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

Это свойство похоже на align-items, но здесь он применяется к отдельным элементам гибкости.

Usage -

align-self: auto | flex-start | flex-end | center | baseline | stretch;

Это свойство принимает следующие значения -

  • flex-start - Гибкий элемент будет выровнен по вертикали вверху контейнера.

  • flex-end - Гибкий элемент будет выровнен по вертикали в нижней части контейнера.

  • flex-center - Гибкий элемент будет выровнен по вертикали по центру контейнера.

  • Stretch - Гибкий элемент будет выровнен по вертикали так, чтобы он заполнял все вертикальное пространство контейнера.

  • baseline - Гибкий элемент будет выровнен по базовой линии поперечной оси.

гибкий старт

При передаче этого значения в свойство align-self конкретный гибкий элемент будет выровнен по вертикали в верхней части контейнера.

В следующем примере демонстрируется результат передачи значения flex-start к align-self свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:start;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

гибкий конец

При передаче этого значения в свойство align-self, конкретный гибкий элемент будет выровнен по вертикали в нижней части контейнера.

В следующем примере демонстрируется результат передачи значения flex-end к align-self свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:flex-end;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

центр

При передаче значения center к собственности align-self, конкретный гибкий элемент будет выровнен по вертикали в центре контейнера.

В следующем примере демонстрируется результат передачи значения center к align-self свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:center;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -

протяжение

При передаче этого значения в свойство align-self, конкретный гибкий элемент будет выровнен по вертикали таким образом, чтобы заполнить все вертикальное пространство контейнера.

В следующем примере демонстрируется результат передачи значения stretch в align-self свойство.

<!doctype html>
<html lang = "en">
   <style>
      .box1{background:green;}
      .box2{background:blue;}
      .box3{background:red;}
      .box4{background:magenta; align-self:stretch;}
      .box5{background:yellow;}
      .box6{background:pink;}
      .box{
         font-size:35px;
         padding:15px;
      }
      .container{
         display:flex;
         height:100vh;
         border:3px solid black;
         align-items:flex-start;
      }
   </style>
   
   <body>
      <div class = "container">
         <div class = "box box1">One</div>
         <div class = "box box2">two</div>
         <div class = "box box3">three</div>
         <div class = "box box4">four</div>
         <div class = "box box5">five</div>
         <div class = "box box6">six</div>
      </div>
   </body>
</html>

Это даст следующий результат -