пн, 05/20/2024 - 13:37 By seoroad

CSS Flexbox шпаргалка

Flexbox, или Flexible Box Layout, — это современный интерфейс для настраиваемых макетов в CSS. Он позволяет легко управлять выравниванием, направлением и порядком элементов в контейнере, предоставляя более эффективный и интуитивно понятный способ работы с расположением элементов на веб-странице.

Основные концепции Flexbox

  • Флекс-контейнер: элемент, который содержит дочерние элементы флексбокса. Он определяется с помощью свойства display: flex;.

  • Флекс-элементы: все прямые дочерние элементы флекс-контейнера.

Свойства Флекс-Контейнера

flex контейнер

Настройки флекс-контейнера определяют поведение его дочерних элементов. Вот ключевые свойства:

  1. display:

    • .container {
        display: flex;
      }
      
    • flex — превращает элемент в флекс-контейнер.

    • inline-flex — делает элемент строчным флекс-контейнером.

  2. flex-direction:

    • Направление размещения флекс-элементов внутри контейнера.

    • .container {
        display: flex;
        flex-direction: row;
      }
      
    • Значения:

      • row (по умолчанию): элементы размещаются по горизонтали слева направо.

      • row-reverse: справа налево.

      • column: вертикально сверху вниз.

      • column-reverse: снизу вверх.

  3. flex-wrap:

    • Управляет переносом элементов на новую строку/столбец.

    • .container {
        display: flex;
        flex-wrap: nowrap;
      }
      
    • Значения:

      • nowrap (по умолчанию): без переноса.

      • wrap: перенос с начала новой строки/столбца.

      • wrap-reverse: перенос с конца новой строки/столбца.

  4. justify-content:

    • Выравнивание флекс-элементов вдоль главной оси.

    • .container {
        display: flex;
        justify-content: space-between;
      }
      
    • Значения:

      • flex-start (по умолчанию): элементы прижаты к началу по главной оси.

      • flex-end: к концу по главной оси.

      • center: центрируются вдоль главной оси.

      • space-between: равномерное распределение с первой строкой у начала и последней у конца контейнера.

      • space-around: равномерное распределение с равными отступами вокруг каждого элемента.

  5. align-items:

    • Выравнивание флекс-элементов по поперечной оси относительно друг друга.

    • .container {
        display: flex;
        align-items: center;
      }
    • Значения:

      • stretch (по умолчанию): элементы растягиваются на всю высоту контейнера.

      • flex-start: выровнены у начала поперечной оси.

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

      • center: центрированы по поперечной оси.

      • baseline: выровнены по базовой линии текста.

  6. align-content:

    • .container {
        display: flex;
        align-content: center;
      }
    • Управляет выравниванием нескольких строк или столбцов внутри флекс-контейнера вдоль поперечной оси при наличии свободного пространства на ней (актуально только если присутствует свойство flex-wrap).

    • Значения такие же, как и у justify-content.

Свойства Флекс-Элемента

flex элементы

Каждый флекс-элемент может быть настроен индивидуально для управления его поведением в пределах контейнера:

  1. order:

    • .container {
        display: flex;
      }
      
      .item {
        order: 3;
      }
    • Задает порядок отображения элемента относительно других флекс-элементов. Элементам можно задавать целочисленное значение порядка: чем больше значение, тем позже будет отображен элемент.

  2. flex-grow:

    • .container {
        display: flex;
      }
      
      .item {
        flex-grow: 1;
      }
    • Коэффициент роста элемента внутри контейнера при распределении свободного пространства на главной оси. Значение по умолчанию 0; положительные значения позволяют элементам расти за пределы их первоначального размера.

  3. flex-shrink:

    • .container {
        display: flex;
      }
      
      .item {
        flex-shrink: 3;
      }
    • Коэффициент сжатия элемента при уменьшении доступного пространства внутри контейнера. По умолчанию равен 1; нулевое значение предотвращает уменьшение размера элемента менее его базового значения.

  4. flex-basis:

    • .container {
        display: flex;
      }
      
      .item {
        flex-basis: 250px;
      }
    • Определяет основной размер элемента перед распределением свободного места вокруг него или между ним и другими элементами (аналогично ширине или высоте).

  5. align-self:

    • .container {
        display: flex;
        align-items: flex-start;
      }
      
      .item {
        align-self: flex-end;
      }
    • Позволяет изменять настройку align-items только для выбранного элемента, переопределяя общую настройку для всех других его аналогов в контейнере.

Примеры использования Flexbox

Простой вертикальный центринг

.container {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
}

Пример верстки мессенджеров в карточке интернет магазина

выравнивание номера телефона по левому краю, иконки мессенджеров по правому.

Отображение на ПК

css flex шпаргалка

Отображение на мобильных 

css flex выравнивание

HTML

<div class="messenger">
		<div class="icon_tlf"><a href="tel:+79260000000" class="icon_tlf_2" ><!-- .ui-icon.ui-icon-service-callback > i -->
			<div class="ui-icon ui-icon-service-callback"><i></i></div></a></div>&nbsp;
	
		<div class="tlf_nomer"><a href="tel:+79260000000">+7 (926) 007-00-00</a></div>&nbsp;

		<div class="icon_messenger">
			<!-- .ui-icon.ui-icon-service-whatsapp > i -->
			<a href="https://wa.me/792600000" class="product__messenger-icon product__messenger-icon_whatsapp" title="WhatsApp"><div class="ui-icon ui-icon-service-whatsapp"><i></i></div></a>&nbsp;
			
			<!-- .ui-icon.ui-icon-service-telegram > i -->
			<a href="tg://resolve?domain=domain" class="product__messenger-icon product__messenger-icon_telegram" title="Telegram"><div class="ui-icon ui-icon-service-telegram"><i></i></div></a>&nbsp;
	
			<!-- .ui-icon.ui-icon-service-viber > i -->
			<a href="viber://chat?number=%2B7926000000" class="product__messenger-icon product__messenger-icon_viber" title="Viber"><div class="ui-icon ui-icon-service-viber"><i></i></div></a>
		</div>
</div>
.messenger {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	margin-top: 25px;
}

.tlf_nomer {
	font-size: 18px;
	font-weight: bold;
}

.ui-icon > i {
	padding-top: 70%;
	width: 70%;
}

.icon_messenger {
	margin-left: auto;
}

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

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
CAPTCHA
9 + 5 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.