CSS: FlexBox

RedDeveloper
21.06.2023 15:27
CSS: FlexBox

Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.

Давайте попробуем понять это на практике.

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

Мы используем display: flex, чтобы установить свойство flex для нашего контейнера.

.container {
    display: flex;
}
Мы используем display flex чтобы установить свойство flex для нашего контейнера

По умолчанию flex позиционирует наши элементы по оси alig.

Мы можем изменить направление главной оси с помощью свойства flex-direction

  • flex-direction: column
.container {
    display: flex;
    flex-direction: column;
}
Мы можем изменить направление главной оси с помощью свойства flex-direction

→ justify-content:

Выравнивает ось.

.container {
    display: flex;
    /* flex-direction: row; */
    justify-content: flex-end;
}
Выравнивает ось

Имеет следующие значения:

  • пространство между
Имеет следующие значения
  • пространство вокруг
Имеет следующие значения
  • равномерное пространство
Имеет следующие значения
  • центр
Имеет следующие значения
  • флекс-старт
Имеет следующие значения
  • flex-end
Имеет следующие значения

→ Для размещения элементов вдоль поперечной оси мы используем функцию align-items

.container {
    display: flex;
    /* flex-direction: row; */
    justify-content: space-evenly;
    align-items: baseline;
}

.item-1 {
    font-size: 1.5rem;
}
→ Для размещения элементов вдоль поперечной оси мы используем функцию align-items

→ когда мы добавляем больше элементов в контейнер, элементы сдавливают друг друга.

→ когда мы добавляем больше элементов в контейнер элементы сдавливают друг друга

Поэтому здесь мы используем новое свойство:

  • flex-wrap: no-wrap (по умолчанию)

Мы изменим его на flex-wrap: wrap

.container {
    display: flex;
    /* flex-direction: row; */
    /* justify-content: space-evenly;
    align-items: baseline; */
    flex-wrap: wrap;
}
Мы изменим его на flex-wrap wrap
  • flex-wrap включает новое свойство : align-content
.container {
    display: flex;
    /* flex-direction: row; */
    /* justify-content: space-evenly;
    align-items: baseline; */
    flex-wrap: wrap;
    align-content: flex-end;
}
Мы изменим его на flex-wrap wrap

→ свойство gap

Gap : используется для промежутка между элементами

.container {
    display: flex;
    /* flex-direction: row; */
    /* justify-content: space-evenly;
    align-items: baseline; */
    flex-wrap: wrap;
    align-content: space-around;
    gap: 1rem;
}
gap  используется для промежутка между элементами
  • flex-grow

Flex-grow - свойство, используемое для предоставления оставшегося пространства элементу.

.container {
    display: flex;
}

.item-3 {
    flex-grow: 1;
}
flex-grow - свойство используемое для предоставления оставшегося пространства элементу
  • flex-shrink

Определяет, насколько быстро будет уменьшаться предмет по сравнению с другими предметами.

Для предмета, который не уменьшается вообще, мы задаем flex-shrink: 0

.container {
    display: flex;
}

.item-3 {
    flex-shrink: 5;
}
Для предмета который не уменьшается вообще мы задаем flex-shrink 0
  • flex-basis:

Если у элемента есть размер, т.е. ширина, и мы хотим заменить этот размер на что-то другое, то мы используем следующую команду

Например, наш элемент имеет размер 100px, и мы хотим изменить его на 300px. Мы используем свойство flex-basis

.container {
    display: flex;
}

.item-3 {
    flex-basis: 300px;
}
Например наш элемент имеет размер 100px и мы хотим изменить его на 300px Мы используем

→ flex - это сокращение для flex-grow, flex-shrink и flex-basis вместе взятых.

.item-1 {
flex: 1;
}
  • align-self

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

.container {
    display: flex;
}

.item-3 {
    align-self: flex-end;
}
→ перезаписывает значение align-items в контейнере но для отдельного элемента

→ заказать

Это свойство используется для изменения порядка появления элементов.

Все элементы по умолчанию имеют свойство порядка 0.

.container {
    display: flex;
}

.item-3 {
    order: -1;
}
все элементы по умолчанию имеют свойство порядка 0

Предложение: не использовать свойство order слишком часто, так как оно нарушает семантику и доступность HTML.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.