📝 Html Css

CSS Flexbox

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
3 мин
👁️
Просмотров
70
🌿
Уровень
Средний
🐦 💼 ✈️

Flexbox — это модель раскладки, которая делает выравнивание и распределение элементов в строку или колонку простым. Для DevBlog он нужен везде: навигация, карточки, хедер, футер.

Включение Flexbox

.container {
  display: flex;
}

Этого достаточно, чтобы дочерние элементы выстроились в строку.


Свойства контейнера

flex-direction — направление оси

.container {
  display: flex;
  flex-direction: row;            /* по умолчанию: слева направо */
  /* flex-direction: row-reverse;    справа налево */
  /* flex-direction: column;         сверху вниз */
  /* flex-direction: column-reverse; снизу вверх */
}

justify-content — выравнивание по главной оси

Главная ось — направление flex-direction (по умолчанию горизонталь).

.container {
  justify-content: flex-start;    /* по умолчанию: прижать влево */
  /* justify-content: flex-end;      прижать вправо */
  /* justify-content: center;        по центру */
  /* justify-content: space-between; крайние у краёв, остальные равномерно */
  /* justify-content: space-around;  равные отступы вокруг каждого */
  /* justify-content: space-evenly;  строго равные промежутки */
}

align-items — выравнивание по поперечной оси

Поперечная ось перпендикулярна главной (по умолчанию вертикаль).

.container {
  align-items: stretch;     /* по умолчанию: растянуть до высоты контейнера */
  /* align-items: flex-start; по верхнему краю */
  /* align-items: flex-end;   по нижнему краю */
  /* align-items: center;     по центру по вертикали */
  /* align-items: baseline;   по базовой линии текста */
}

gap — отступы между элементами

.container {
  display: flex;
  gap: 16px;           /* одинаковый отступ по обеим осям */
  /* gap: 16px 24px;   вертикальный | горизонтальный */
}

Заменяет старый подход с margin на каждом дочернем элементе.

flex-wrap — перенос на следующую строку

.cards-grid {
  display: flex;
  flex-wrap: wrap;         /* переносить элементы если не помещаются */
  /* flex-wrap: nowrap;    по умолчанию: всё в одну строку */
  gap: 24px;
}

Свойства дочерних элементов

flex — как элемент растягивается

Сокращение для flex-grow flex-shrink flex-basis.

.sidebar {
  flex: 0 0 280px;   /* не расти, не сжиматься, ширина 280px */
}

.main-content {
  flex: 1;           /* занять оставшееся место */
}

order — порядок отображения

.featured-post {
  order: -1;   /* показать первым вне зависимости от HTML-порядка */
}

align-self — выравнивание конкретного элемента

.cta-button {
  align-self: flex-end;   /* прижать к нижнему краю контейнера */
}

DevBlog: навигационная панель

<header class="site-header">
  <a href="/" class="logo">DevBlog</a>
  <nav class="site-nav">
    <a href="/" class="nav-link">Главная</a>
    <a href="/articles/" class="nav-link">Статьи</a>
    <a href="/about/" class="nav-link">Обо мне</a>
  </nav>
</header>
.site-header {
  display: flex;
  justify-content: space-between;  /* логотип влево, nav вправо */
  align-items: center;
  padding: 0 24px;
  height: 56px;
  border-bottom: 1px solid #e5e7eb;
}

.logo {
  font-weight: 700;
  font-size: 1.25rem;
  color: #111827;
  text-decoration: none;
}

.site-nav {
  display: flex;
  gap: 24px;
}

.nav-link {
  color: #374151;
  text-decoration: none;
  font-weight: 500;
}

DevBlog: ряд карточек с переносом

<section class="posts-grid">
  <article class="post-card">...</article>
  <article class="post-card">...</article>
  <article class="post-card">...</article>
</section>
.posts-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}

.post-card {
  flex: 1 1 300px;    /* минимальная ширина 300px, растягиваться */
  max-width: 400px;
  padding: 24px;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
}

При широком экране — 3 карточки в ряд. При узком — каждая занимает всю ширину.


DevBlog: двух-колоночный макет статьи

<div class="article-layout">
  <main class="article-content">...</main>
  <aside class="article-sidebar">...</aside>
</div>
.article-layout {
  display: flex;
  gap: 48px;
  align-items: flex-start;   /* не растягивать колонки по высоте */
  max-width: 1100px;
  margin: 0 auto;
  padding: 40px 24px;
}

.article-content {
  flex: 1;           /* занять оставшееся место */
  min-width: 0;      /* позволяет сжиматься — важно для flex! */
}

.article-sidebar {
  flex: 0 0 260px;   /* фиксированная ширина 260px */
}

Шпаргалка

Свойство На контейнере Значения
flex-direction Да row, column, row-reverse, column-reverse
justify-content Да flex-start, center, space-between, space-evenly
align-items Да stretch, center, flex-start, flex-end
gap Да 16px, 16px 24px
flex-wrap Да nowrap, wrap
flex На элементе 1, 0 0 300px, 1 1 auto
align-self На элементе те же, что align-items
order На элементе число

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 81
📝

Цвета и шрифты в CSS

Первое, что видит читатель DevBlog — текст. Правильно подобранные цвета и шрифты делают блог читабельным...

📅 30.06.2026 👁️ 73
📝

CSS-селекторы

Селектор — это первая часть CSS-правила. Он говорит браузеру: «применить эти стили вот к этим...

📅 30.06.2026 👁️ 76

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!