Статьи

Flex-утиліти для побудови адаптивного макета на Bootstrap 4

  1. Блоки з display: flex
  2. Напрямок всередині flex-блоків
  3. Вирівнювання вмісту всередині flexbox-контейнера
  4. Перенесення блоків за допомогою властивості flex-wrap
  5. Вирівнювання елементів всередині flex-контейнера заданої висоти
  6. Основні класи:
  7. Індивідуальне вирівнювання елементів усередині flex-контейнера заданої висоти
  8. Вирівнювання вмісту багаторядкових контейнерів

Адаптивна сітка Bootstrap 4 побудована на основі моделі Flexbox . Основою для використання адаптивних класів є клас row як батьківський контейнера для декількох класів типу col-префи-цифра. Для класу row задано властивість display: flex, а дочірні елементи ділять його простір відповідно до префіксом і цифрою на рівні частини, але для різних дозволів екрану.
наприклад,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<Div class = "container-fluid">

<Div class = "row">

<Div class = "col-sm-4">

<H3> col - sm - 4 </ h3>

<P> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis dolorem,

aliquam temporibus numquam quos eaque rem omnis a eligendi ut? </ P>

</ Div>

<Div class = "col-sm-4">

<H3> col - sm - 4 </ h3>

<P> Inventore deleniti minus, accusantium harum iste vel blanditiis quis,

ad perspiciatis error quas impedit quidem aperiam veritatis temporibus libero nobis. </ P>

</ Div>

<Div class = "col-sm-4">

<H3> col - sm - 4 </ h3>

<P> Voluptatum itaque amet, voluptates maiores autem reiciendis voluptatem,

reprehenderit eum earum nisi ratione sunt sed aut quod rem, officia cum! </ P>

</ Div>

</ Div>

</ Div>

CSS-властивості для класів, використаних в прикладі, представлені на скріншотах нижче.
CSS-властивості для класів, використаних в прикладі, представлені на скріншотах нижче

Однак, є ще маса утиліт, які ви можете використовувати як усередині класів row або col -..., так і самостійно.

Блоки з display: flex

У класу row крім властивості display: flex є ще 2 властивості, пов'язаних з компенсацією правого і лівого відступу всередині класу container (container-fluid). Це margin-left і margin-right в 15px. За рахунок цих негативних зовнішніх відступів не варто використовувати клас row поза класом container або container-fluid, css-властивості яких такі:

Для того щоб призначити будь-якого блоку css-властивість display: flex, використовуйте клас .d-flex або один з "чуйних" варіантів (.d-sm-flex, .d-md-flex, .d-lg-flex або .d-xl-flex). У разі, якщо для елемента потрібно властивість display: inline-flex в Bootstrap4 передбачені клас .d-inline-flex і його різновиди .d-sm-inline-flex, .d-md-inline-flex, .d-lg-inline -flex або .d-xl-inline-flex.

Напрямок всередині flex-блоків

Як відомо, за замовчуванням всі flexbox-контейнери мають напрямок вздовж головної осі (властивість flex-direction: row). Ви можете змінювати напрямок за допомогою таких класів Bootstrap-4:

  • flex-row
  • flex-row-reverse
  • flex-column
  • flex-column-reverse

До кожного з перерахованих класів можуть бути додані адаптивні приставки -sm-, -md-, -lg-, -xl-. Наприклад, можна використовувати клас .flex-sm-row або .flex-md-column, або .flex-lg-row-reverse, або .flex-xl-column-reverse і подібні.

Вирівнювання вмісту всередині flexbox-контейнера

Напевно вам знадобляться утиліти, пов'язані з css-властивістю justify-content для flexbox-контейнерів, щоб змінювати вирівнювання flex-елементів по головній осі (горизонтальна вісь X за замовчуванням і вертикальна вісь Y, якщо flex-direction: column). Класи, що надаються css-файлами Bootstrap-4 пропонують на вибір варіанти суфіксів start (замовчування браузера), end, center, between або around:

  • .justify-content-start, .justify-content-sm-start, .justify-content-md-start, .justify-content-lg-start, .justify-content-xl-start
  • .justify-content-end, .justify-content-sm-end, .justify-content-md-end, .justify-content-lg-end, .justify-content-xl-end
  • .justify-content-center, .justify-content-sm-center, .justify-content-md-center, .justify-content-lg-center, .justify-content-xl-center
  • .justify-content-between, .justify-content-sm-between, .justify-content-md-between, .justify-content-lg-between, .justify-content-xl-between
  • .justify-content-around, .justify-content-sm-around, .justify-content-md-around, .justify-content-lg-around, .justify-content-xl-around

Складно сказати, який з них ви виберете для своєї верстки, але думається, що найпопулярнішими будуть класи .justify-content-center, .justify-content-between, і .justify-content-around, тому що найчастіше доводиться або центрировать контент, або розподіляти кілька блоків по ширині батьківського елемента.

Перенесення блоків за допомогою властивості flex-wrap

Для flex-контейнера можна вибрати клас для перенесення дочірніх блоків, що не поміщаються по ширині контейнера на наступний рядок (.flex-wrap). Якщо потрібно змінити порядок відображення блоків при перенесенні, то потрібен клас .flex-wrap-reverse. За замовчуванням перенос не виконується, але якщо вам це потрібно вказати явно, використовуйте клас .flex-nowrap. Як і для інших класів, використання переносів можливо тільки для певних дозволів екрану з чуйними утилітами:

  • .flex-sm-nowrap
  • .flex-sm-wrap
  • .flex-sm-wrap-reverse
  • .flex-md-nowrap
  • .flex-md-wrap
  • .flex-md-wrap-reverse
  • .flex-lg-nowrap
  • .flex-lg-wrap
  • .flex-lg-wrap-reverse
  • .flex-xl-nowrap
  • .flex-xl-wrap
  • .flex-xl-wrap-reverse

Розглянемо реальний приклад, в якому всередині батьківського контейнера потрібно розмістити 4 квадратних блоку з невеликою кількістю інформації в кожному, причому при зміні ширини екрану вони повинні перебудуватися в 2 стовпчика (планшет) або 1 стовпець (телефон).

Для реалізації цього прикладу були використані класи .d-flex, .justify-content-around і .flex-wrap для поділу блоків рівними проміжками і перенесення їх на новий рядок при зменшенні ширини контейнера. На вкладці HTML можна подивитися розмітку, а вкладка CSS містить код стилів.

See the Pen Bootstrap 4 justify-content by Elen ( @ambassador ) on CodePen .18892

Вирівнювання елементів всередині flex-контейнера заданої висоти

Якщо висота flex-контейнера більше, ніж розмір вкладених в неї блоків, ви можете використовувати flex-утиліти, засновані на властивості align-items для зміни вирівнювання дочірніх елементів по перехресної осі (вісь Y за замовчуванням (flex-direction: row) і вісь X , якщо задано властивість flex-direction: column). Назви класів засновані на назві самого властивості + його значення: stretch (йде за замовчуванням), start, end, center, baseline.

Основні класи:

  • .align-items-start
  • .align-items-end
  • .align-items-center
  • .align-items-baseline
  • .align-items-stretch

Класи з префіксами:

  • .align-items-sm-start, .align-items-md-start, .align-items-lg-start, .align-items-xl-start
  • .align-items-sm-end, .align-items-md-end, .align-items-lg-end, .align-items-xl-end
  • .align-items-sm-center, .align-items-md-center, .align-items-lg-center, .align-items-xl-center
  • .align-items-sm-baseline, .align-items-md-baseline, .align-items-lg-baseline, .align-items-xl-baseline
  • .align-items-sm-stretch, .align-items-md-stretch, .align-items-lg-stretch, .align-items-xl-stretch

Досить часто вирівнювання різного типу необхідно використовувати у верхній частині сторінки - в тезі <header> або в різних слайдерах.

Приклад, розміщений нижче, цікавий тим, що для формування блоків заголовної частини сайту використані такі класи, як .justify-content-between і .align-items-end. У блоках з текстом, розміщених всередині основного flex-контейнера використаний клас .align-items-center, що дозволяє центрувати елементи один щодо одного. Перемикайте вкладки HTML і CSS, щоб подивитися розмітку і стильові правила.

See the Pen Bootstrap 4 justify-content and align-items classes by Elen ( @ambassador ) on CodePen .18892

Індивідуальне вирівнювання елементів усередині flex-контейнера заданої висоти

У тому випадку, коли вам потрібно вирівняти тільки один або частина елементів з розташованих в одному ряду по висоті, ви можете використовувати класи Bootstrap-4, що починаються з align-self:

  • .align-self-start
  • .align-self-end
  • .align-self-center
  • .align-self-baseline
  • .align-self-stretch

Як і у інших класів, тут можна застосувати чуйні префікси, щоб отримати клас, який працює на одному або декількох дозволах екрану:

  • .align-self- (sm, md, lg, xl) -start
  • .align-self- (sm, md, lg, xl) -end
  • .align-self- (sm, md, lg, xl) -center
  • .align-self- (sm, md, lg, xl) -baseline
  • .align-self- (sm, md, lg, xl) -stretch

Сподіваюся, ви розумієте, що префікс повинен бути тільки один - або -sm-, або -md-, або -lg-, або -xl-, вказувати всі через кому можна.

У прикладі нижче блоки з класом .team-member всередині flex-контейнера з мінімальною висотою в 600px розташовані "драбинкою" за рахунок використання таких класів, як .align-self-md-start, align-self-md-center і .align- self-md-end. За рахунок цього перший блок розміщується вгорі контейнера, другий - посередині, а третій - внизу. Оскільки кожному з цих блоків задано властивість max-width: 30%, a при зменшенні ширини екрану їх висота вирівнюється і наближається до висоти батьківського контейнера, використаний клас з приставкою -md-. Також у батьківського елементу були додані розглянуті раніше клас .justify-content-sm-between для розподілу дочірніх блоків всередині нього з однаковими проміжками між ними, і клас .flex-wrap для перенесення блоків на маленьких екранах при скасуванні значення max-width:

@ Media (max - width: 576px) {

. team - member {

max - width: none;

margin - bottom: 1em;

}

}

See the Pen Bootstrap 4 align-items .clases by Elen ( @ambassador ) on CodePen .18892

Вирівнювання вмісту багаторядкових контейнерів

У тому випадку, якщо ви використовували класи .flex-wrap або .flex-wrap-reverse, і висота вашого контейнера більше розташованих в ній елементів, можна скористатися утилітою, пов'язаної з властивістю align-content, щоб вирівняти дочірні flex-елементи по перехресної осі . Доступними варіантами є: start, end, center, between, around або stretch (за замовчуванням).

Варіанти класів:

  • .align-content-start
  • .align-content-end
  • .align-content-center
  • .align-content-around
  • .align-content-stretch
  • .align-content-sm-start
  • .align-content-sm-end
  • .align-content-sm-center
  • .align-content-sm-around
  • .align-content-sm-stretch
  • .align-content-md-start
  • .align-content-md-end
  • .align-content-md-center
  • .align-content-md-around
  • .align-content-md-stretch
  • .align-content-lg-start
  • .align-content-lg-end
  • .align-content-lg-center
  • .align-content-lg-around
  • .align-content-lg-stretch
  • .align-content-xl-start
  • .align-content-xl-end
  • .align-content-xl-center
  • .align-content-xl-around
  • .align-content-xl-stretch

Приклад, розміщений нижче, цікавий тим, що ви можете протестувати, як буде змінюватися розташування зображень галереї в залежності від призначуваного класу .align-content -.... Зверніть увагу на те, як змінюється розміщення блоків на маленьких екранах (для цього потрібно клацнути по вкладці HTML або CSS).

See the Pen Bootstrap-4 align-content classes by Elen ( @ambassador ) on CodePen .18892

У прикладі спеціально не була змінена висота батьківського блоку для невеликих дозволів екранів, тому дочірні блоки виходять за межі контейнера. Клацніть на кнопці У прикладі спеціально не була змінена висота батьківського блоку для невеликих дозволів екранів, тому дочірні блоки виходять за межі контейнера і расскомментіруйте блок коду, щоб змінити ситуацію:

@ Media (max - width: 576px) {

. . .

/ * # Nature-gallery {

height: auto;

} * /

}

Посилання на документацію Bootstrap 4 англійською і російською мовою:

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то