Содержание

Слайд 2

Щоб почати працювати з CSS Flexbox, потрібно зробити контейнер flex-контейнером. Робиться

Щоб почати працювати з CSS Flexbox, потрібно зробити контейнер flex-контейнером. Робиться

це так:
#container {
display: flex;
}
Слайд 3

Flex-direction У flex-контейнера є дві осі: головна і перпендикулярна їй.

Flex-direction

У flex-контейнера є дві осі: головна і перпендикулярна їй.

Слайд 4

За замовчуванням всі елементи розташовуються вздовж головної осі - зліва направо.

За замовчуванням всі елементи розташовуються вздовж головної осі - зліва направо.

Саме тому блоки в попередньому прикладі вишикувалися в лінію, коли ми застосували display: flex. А ось flex-direction дозволяє обертати головну вісь.

#container {
display: flex;
flex-direction: column;
}

Слайд 5

Зверніть увагу, що flex-direction: column НЕ вирівнює блоки по осі, перпендикулярній

Зверніть увагу, що flex-direction: column НЕ вирівнює блоки по осі, перпендикулярній

головній. Головна вісь сама змінює своє розташування, і тепер спрямована згори донизу.
Є ще парочка властивостей для flex-direction: row-reverse і column-reverse які впроваджують “дзеркальність”
Слайд 6

justify-content Відповідає за вирівнювання елементів по головній осі: #container { display:

justify-content

Відповідає за вирівнювання елементів по головній осі:

#container {
display: flex;
flex-direction:

row; justify-content: flex-start;
}
Слайд 7

Justify-content може приймати 5 значень: flex-start flex-end center space-between space-around Space-between

Justify-content може приймати 5 значень:
flex-start
flex-end
center
space-between
space-around

Space-between задає однакову відстань між блоками, але

не між контейнером і блоками. Space-around також задає однакову відстань між блоками, але тепер відстань між контейнером і блоками дорівнює половині відстані між блоками.
Слайд 8

align-items Якщо justify-content працює з головною віссю, то align-items працює з

align-items

Якщо justify-content працює з головною віссю, то align-items працює з віссю,

перпендикулярної головної осі. Повернемося до flex-direction: row і пройдемося по командам align-items: flex-start flex-end center stretch baseline.

Варто зауважити, що для align-items: stretch висота блоків повинна бути auto (або не вказана явно).

Слайд 9

Для align-items: baseline теги параграфа прибирати не потрібно, інакше вийде так:

Для align-items: baseline теги параграфа прибирати не потрібно, інакше вийде так:

Щоб

краще розібратися в тому, як працюють осі, об'єднаємо justify-content з align-items і подивимося, як працює вирівнювання по центру для двох властивостей flex-direction:
Слайд 10

flex-basis Відповідає за початковий розмір елементів до того, як вони будуть замінені іншими властивостями CSS Flexbox:

flex-basis

Відповідає за початковий розмір елементів до того, як вони будуть замінені

іншими властивостями CSS Flexbox:
Слайд 11

column-gap Відповідає за відступи між елементами у flex-контейнері

column-gap

Відповідає за відступи між елементами у flex-контейнері

Слайд 12

row-gap Відоповідає за відступи між рядками елементів які знаходяться всередині flex-контейнера

row-gap

Відоповідає за відступи між рядками елементів які знаходяться всередині flex-контейнера

Слайд 13

align-self Дозволяє маніпулювати окремими дочірніми елементами. Зауважте, що align-self потрібно присвоювати

align-self

Дозволяє маніпулювати окремими дочірніми елементами. Зауважте, що align-self потрібно присвоювати НЕ

до батьківського елементу.

#container { align-items: flex-start; } .square#one { align-self: center; }
// Only this square will be centered.

Для двух блоков применим align-self, а для остальных — align-items: center и flex-direction: row.

Слайд 14

flex-basis впливає на розмір елементів вздовж головної осі. Подивимось, що станеться,

flex-basis впливає на розмір елементів вздовж головної осі. Подивимось, що станеться,

якщо ми змінимо напрямок головної осі:

Зауважте, що нам довелося змінити і висоту елементів: flex-basis може визначати як висоту елементів, так і їх ширину в залежності від напрямку осі.

Слайд 15

flex-grow Визначає коефіцієнти зростання блоку. Для початку задамо блокам однакову ширину

flex-grow

Визначає коефіцієнти зростання блоку. Для початку задамо блокам однакову ширину 120px.

За

замовчуванням значення flex-grow дорівнює 0. Це означає, що блокам заборонено збільшуватися в розмірах. Задамо flex-grow рівним 1 для кожного блоку:

Тепер блоки зайняли місце, що залишилося в контейнері

Слайд 16

Але що значить flex-grow: 1? Спробуємо зробити flex-grow рівним 999: І

Але що значить flex-grow: 1? Спробуємо зробити flex-grow рівним 999:

І ...

нічого не сталося. Так вийшло через те, що flex-grow приймає не абсолютні значення, а відносні. Це означає, що не важливо, яке значення у flex-grow, важливо, яке воно по відношенню до інших блоків:

Спочатку flex-grow кожного блоку дорівнює 1, в сумі вийде 6. Отже, наш контейнер розділений на 6 частин. Кожен блок буде займати 1/6 частина доступного простору в контейнері. Коли flex-grow третього блоку стає рівним 2, контейнер ділиться на 7 частин: 1 + 1 + 2 + 1 + 1 + 1. Тепер третій блок займає 2/7 простору, інші - по 1/7. І так далі.
flex-grow працює тільки для головної осі, поки ми не змінимо її напрямок.

Слайд 17

flex-shrink Пряма протилежність flex-grow. Визначає, наскільки блоку можна зменшитися в розмірі.

flex-shrink

Пряма протилежність flex-grow. Визначає, наскільки блоку можна зменшитися в розмірі. flex-shrink

використовується, коли елементи не вміщаються в контейнер. Ви визначаєте, які елементи повинні зменшитися в розмірах, а які - ні. За замовчуванням значення flex-shrink для кожного блоку дорівнює 1. Це означає, що блоки будуть стискуватися, коли контейнер буде зменшуватися.
Задамо flex-grow і flex-shrink рівними 1:
Слайд 18

Тепер поміняємо значення flex-shrink для третього блоку на 0. Йому заборонили

Тепер поміняємо значення flex-shrink для третього блоку на 0. Йому заборонили

стискатися, тому його ширина залишиться рівною 120px:

flex-shrink базується на пропорціях. Тобто, якщо у першого блоку flex-shrink дорівнює 6, а в інших він дорівнює 2, то, це означає, що перший блок буде стискатися в три рази швидше, ніж інші.

Слайд 19

flex Заміняє flex-grow, flex-shrink і flex-basis. Значення за замовчуванням: 0 (grow)

flex

Заміняє flex-grow, flex-shrink і flex-basis. Значення за замовчуванням: 0 (grow) 1

(shrink) auto (basis).

.square#one { flex: 2 1 300px; }
.square#two { flex: 1 2 300px; }

У обох однаковий flex-basis. Це означає, що обидва будуть шириною в 300px (ширина контейнера: 600px плюс margin і padding). Але коли контейнер почне збільшуватися в розмірах, перший блок (з великим flex-grow) буде збільшуватися в два рази швидше, а другий блок (з найбільшим flex-shrink) буде стискатися в два рази швидше:

Слайд 20

flex-wrap За замовчуванням, якщо батьківський flex блок стискається, всі дочірні елементи

flex-wrap

За замовчуванням, якщо батьківський flex блок стискається, всі дочірні елементи так

само стискаються. Для того , щоб уникнути такої поведінки, та мати можливість переносити елементи на наступний рядок, у випадку ,якщо вони не вміщаються в поточний, ми використовуємо властивість flex-wrap:wrap. Частіше за все подібний прийом використовують, щоб зробити “сітку товарів” на різних розширеннях екрану