Flexbox

CSS Flexbox

Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅?

Flexbox - это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² CSS3, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π³ΠΈΠ±ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ элСмСнтов, ΠΈΡ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ порядок Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Он состоит ΠΈΠ· Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Flex-элСмСнтов. Если ΠΏΡ€ΠΎΡ‰Π΅, это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ выравнивания элСмСнтов Π½Π° страницС.

Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ - Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π±Π»ΠΎΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρƒ/высоту, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ порядок отобраТСния своих Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ заполнСния доступной области Π½Π° экранС.

Flex-элСмСнты - Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ, ΠΎΡ‚ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π² зависимости ΠΎΡ‚ свойств Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Главная ось (main axis) ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ вдоль Flex-элСмСнтов (для строки - слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, для ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ - Π²Π½ΠΈΠ·). Начало ΠΈ ΠΊΠΎΠ½Π΅Ρ† оси - main start, main end

ΠŸΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½Π°Ρ ось (cross axis) ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ пСрпСндикулярно Flex-элСмСнтам. Начало ΠΈ ΠΊΠΎΠ½Π΅Ρ† оси - cross start, cross end.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Flexbox?

Π”ΠΎ появлСния Flexbox для размСщСния элСмСнтов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ использовались Ρ‚Π°ΠΊΠΈΠ΅ свойства ΠΊΠ°ΠΊ float, display: inline-block ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ПоявлСниС этого инструмСнта сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΠ»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

  • Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎ всСй доступной ΡˆΠΈΡ€ΠΈΠ½Π΅/высотС родитСля, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ динамичСском ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ… ΡˆΠΈΡ€ΠΈΠ½Ρ‹/высоты;

  • ΠΎΡ‚Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π±Π»ΠΎΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ родитСля;

  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ высотой Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π² Π½ΠΈΡ…;

  • Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ элСмСнты Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ: слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, справа Π½Π°Π»Π΅Π²ΠΎ, свСрху Π²Π½ΠΈΠ· ΠΈΠ»ΠΈ снизу Π²Π²Π΅Ρ€Ρ…;

Как это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

<div class="flex-container">
  <div class="box box-1">Item 1</div>
  <div class="box box-2">Item 2</div> 
  <div class="box box-3">Item 3</div> 
  <div class="box box-4">Item 4</div> 
</div>

ИмССм Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ - flex-container ΠΈ Π΄Π΅Ρ‚Π΅ΠΉ Item 1, Item 2, Item 3, Item 4. Π—Π°Π΄Π°Π΄ΠΈΠΌ классам ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ CSS свойства:

.flex-container {
  display: flex;
}
.box {
  text-align: center;
  width: 100px;
  height:50px;
  margin: 0 5px;
}
.box-1 {
  width:50px;
  background: #ff0000;
}
.box-2 {
  width:70px;
  background: #da2cab;
}
.box-3 {
  width:90px;
  background: #008000;
}
.box-4 {
  background: #0000ff;
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Благодаря свойству display: flex Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° всС элСмСнты Π²Ρ‹ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΈΡΡŒ Π² ряд вдоль Π³Π»Π°Π²Π½ΠΎΠΉ оси.

Π’Π°ΠΆΠ½ΠΎ!

Бвойство "display: flex" всСгда Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ€ΠΎΠ²Π½ΡΡ‚ΡŒ элСмСнты.

Какими свойствами ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Flexbox?

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свойства Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€):

  • flex-direction: устанавливаСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ оси flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°: Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния:

    • row - элСмСнты располоТСны Π² ряд.

    • row-reverse - элСмСнты располоТСны Π² ряд Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

    • column - элСмСнты располоТСны Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ

    • column-reverse - элСмСнты располоТСны Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: row. Π­Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅.

ПРАКВИКА: ΠŸΠΎΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ flex-direction класса .flex-container Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹ΡˆΠ΅ ΠΈ посмотритС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

  • justify-content: Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ располоТСниС flex-элСмСнтов вдоль Π³Π»Π°Π²Π½ΠΎΠΉ оси (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ - Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния:

    • flex-start - всС элСмСнты располоТСны Π² Π½Π°Ρ‡Π°Π»Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ оси (main start).

    • flex-end - всС элСмСнты располоТСны Π² ΠΊΠΎΠ½Ρ†Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ оси (main end).

    • center - всС элСмСнты располоТСны ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ Π³Π»Π°Π²Π½ΠΎΠΉ оси.

    • space-around - элСмСнты распрСдСлСны Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ вдоль Π³Π»Π°Π²Π½ΠΎΠΉ оси с нСбольшими отступами ΠΏΠΎ краям.

    • space-between - элСмСнты распрСдСлСны Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ вдоль Π³Π»Π°Π²Π½ΠΎΠΉ оси Π±Π΅Π· отступов ΠΏΠΎ краям.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: flex-start. Π­Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π² наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ классу .flex-container Π΄ΠΎΠ±Π°Π²ΠΈΠΌ свойство justify-content: flex-end. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ПРАКВИКА: ΠŸΠΎΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ justify-content класса .flex-container Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹ΡˆΠ΅ ΠΈ посмотритС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

  • align-items: Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ располоТСниС flex-элСмСнтов вдоль ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ - ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ). ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² justify-content, Π½ΠΎ Π² пСрпСндикулярном Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния:

    • flex-start - элСмСнты Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси (cross start).

    • flex-end - элСмСнты Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси (cross end).

    • center - элСмСнты ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси.

    • baseline - элСмСнты Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ

    • stretch - элСмСнты Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ всС пространство вдоль ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси (cross axis)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: stretch.

ИзмСним высоту для flex-элСмСнта с классом .box-1 - height: 100px;

ПРАКВИКА: ΠŸΠΎΠΌΠ΅Π½ΡΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ align-items класса .flex-container Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Ρ‹ΡˆΠ΅ ΠΈ посмотритС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

  • flex-wrap: устанавливаСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ отобраТСния элСмСнтов - Π² ΠΎΠ΄Π½ΠΎ строку ΠΈΠ»ΠΈ Π² нСсколько. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния:

    • nowrap - Π±Π΅Π· пСрСноса Flex-элСмСнтов Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки

    • wrap - с пСрСносом Flex-элСмСнтов Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки

    • wrap-reverse - с пСрСноса Flex-элСмСнтов Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ строки Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: nowrap.

ИзмСним ΡˆΠΈΡ€ΠΈΠ½Ρƒ .flex-container ΠΈ установим width: 200px

Π’ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ элСмСнты сТались, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² .flex-container свойство flex-wrap: wrap

Π¨ΠΈΡ€ΠΈΠ½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… Π±Π»ΠΎΠΊΠΎΠ² Ρ€Π°Π²Π½Π° 100px, это Π² суммС мСньшС 200px (мСньшС ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°), поэтому ΠΎΠ½ΠΈ находятся Π² ΠΎΠ΄Π½ΠΎΠΉ строкС. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΡˆΠΈΡ€Π΅ ΠΈ Π½Π΅ влазят Π² ΠΎΠ΄Π½Ρƒ строку, поэтому ΠΎΠ½ΠΈ пСрСнСсСны Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ строки.

ПРАКВИКА: ΠŸΠΎΠΌΠ΅Π½ΡΠΉΡ‚Π΅ значСния свойств width ΠΈ flex-wrap Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈ посмотритС Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свойства Flex-элСмСнта (ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° сам элСмСнт Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°):

  • align-self: пСрСопрСдСляСт Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ вдоль ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… flex-элСмСнтов.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ свойство align-self с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ center Π±Π»ΠΎΠΊΡƒ с классом .box-3

Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π±Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΠ΅Ρ€Π΅Ρ‡Π½ΠΎΠΉ оси.

  • order: опрСдСляСт порядок располоТСния Flex-элСмСнтов Π²Π½ΡƒΡ‚Ρ€ΠΈ Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CSS.

Π—Π°Π΄Π°Π΄ΠΈΠΌ нашим Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ свойство order:

.box-1 {
  order: 3;
}
.box-2 {
  order: 1;
}
.box-3 {
  order: 4
}
.box-4 {
  order: 2;
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ располоТСны Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ПРАКВИКА: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

  • flex-grow: опрСдСляСт коэффициСнт растяТСния Flex-элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π—Π°Π΄Π°Π΄ΠΈΠΌ нашим Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ свойство flex-grow:

.box-1 {
  flex-grow: 2;
}
.box-2 {
  flex-grow: 1;
}
.box-3 {
  flex-grow: 2;
}
.box-4 {
  flex-grow: 3;
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ПРАКВИКА: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

  • flex-shrink: ΠΎ прСдСляСт коэффициСнт суТСния Flex-элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π—Π°Π΄Π°Π΄ΠΈΠΌ нашим Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ свойство flex-shrink:

.box-1 {
  flex-shrink: 0;
}
.box-2 {
  flex-shrink: 1;
}
.box-3 {
  flex-shrink: 3;
}
.box-4 {
  flex-shrink: 2;
}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ПРАКВИКА: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

  • flex-basis: Π·Π°Π΄Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Flex-элСмСнта ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ растяТСниС flex-grow ΠΈΠ»ΠΈ суТСниС flex-shrink элСмСнта. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния:

    • auto - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π¨ΠΈΡ€ΠΈΠ½Π° соотвСтствуСт ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Ссли ΠΎΠ½Π° Π½Π΅ Π·Π°Π΄Π°Π½Π° явна CSS свойствами.

    • {число} - ΡˆΠΈΡ€ΠΈΠ½Π° элСмСнта Π² Π»ΡŽΠ±Ρ‹Ρ… доступных Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния (px, %, em ΠΈ ΠΏΡ€.)

Π—Π°Π΄Π°Π΄ΠΈΠΌ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ свойство flex-basis:

 .box-3 {
   flex-basis: 200px;
 }

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ПРАКВИКА: помСнятС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства flex-basis для любого ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ². ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Ρ‚Π°ΠΊΠΈΠ΅ свойства ΠΊΠ°ΠΊ: float, clear, vertical-align Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° flex-элСмСнт

Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Flexbox Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅?

Рассмотрим нСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ 4 изобраТСния,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π² зависимоти ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠœΡ‹ ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ изобраТСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Π½Π΅ измСняСм ΠΈΡ… для наглядности

<section class="image-container">
    <div class="item-1">
        <img src="{path}"/>
    </div>
    <div class="item-2">
        <img src="{path}"/>
    </div>
    <div class="item-3">
        <img src="{path}"/>
    </div>
    <div class="item-4">
        <img src="{path}"/>
    </div>
</section>

CSS свойства ΠΏΠΎΠΊΠ° Π½Π΅ присвоСны. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π”ΠΎΠ±Π°Π²ΠΈΠΌ классу image-container ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • display: flex

  • justify-content: space-around

  • justify-content: center

  • flex-direction: row-reverse

  • align-items: center

  • flex-direction: column-reverse

    Π”ΠΎΠ±Π°Π²ΠΈΠΌ классам item-1, item-2, item-3, item-4 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • order:{Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 1 Π΄ΠΎ 4 Π² случаной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ}

  • align-self:

.item-1 {
    align-self: center;
}
.item-2 {
    align-self: flex-end;
}
.item-3 {
    align-self: flex-start;
}
.item-4 {
    align-self: flex-end;
}

Π’ΡƒΡ‚, Ρ‚ΡƒΡ‚ ΠΈ Ρ‚ΡƒΡ‚ Π’Ρ‹ смоТСтС Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Flexbox ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ свойствами Flex-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Flex-элСмСнтов.

ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅Π½Π°ΠΆΠ΅Ρ€ для оттачивания Π½Π°Π²Ρ‹ΠΊΠΎΠ² использования Flexbox

Last updated