CSS display — block, inline, flex, grid, none

display — одно из ключевых CSS свойств. Оно определяет, как элемент участвует в потоке документа: занимает ли всю строку, встраивается в текст, или превращается в гибкий flex/grid контейнер.

Вся рубрика CSS: уроки, примеры и справочник по стилям

display: block — блочный элемент

Блочный элемент занимает всю доступную ширину родителя и начинается с новой строки. По умолчанию блочные: div, p, h1h6, ul, li, section, article.

div { display: block; }

/* Характеристики block: */
/* ✅ Занимает всю ширину родителя (если не задана width) */
/* ✅ Начинается с новой строки */
/* ✅ Можно задать width и height */
/* ✅ Все margin и padding работают */

/* Пример: сделать ссылку блочной (кнопка на весь ряд) */
.nav-link {
  display: block;
  padding: 12px 20px;
  text-decoration: none;
  color: #374151;
}

.nav-link:hover {
  background: #f3f4f6;
}
Пример display block: элементы занимают всю ширину родителя и идут один под другим
display: block делает элемент блочным: новая строка, вся ширина, работают width и height.

display: inline — строчный элемент

Inline-элемент встраивается в текст и занимает только место под своё содержимое. По умолчанию строчные: span, a, strong, em, code.

span { display: inline; }

/* Характеристики inline: */
/* ✅ Не начинается с новой строки — встраивается в текст */
/* ✅ Занимает только место под содержимое */
/* ❌ width и height НЕ работают */
/* ⚠️  margin-top и margin-bottom НЕ работают */
/* ✅ margin-left и margin-right работают */
/* ✅ padding работает, но вертикальный может перекрывать соседей */

/* Пример: выделение ключевых слов */
.highlight {
  display: inline;
  background: #fef08a;
  padding: 0 4px;
}
Пример display inline: span внутри текста, width и height не работают
display: inline встраивает элемент в строку: width и height не применяются.

display: inline-block — золотая середина

inline-block совмещает лучшее из двух миров: не начинается с новой строки (как inline), но поддерживает width, height и все отступы (как block).

.tag {
  display: inline-block;
  padding: 4px 12px;
  background: #dbeafe;
  color: #1d4ed8;
  border-radius: 9999px;
  font-size: 0.85rem;
}

/* Характеристики inline-block: */
/* ✅ Как inline: не начинается с новой строки */
/* ✅ Как block: работают width, height */
/* ✅ Все margin и padding работают */

/* Примеры использования */
.btn {
  display: inline-block;
  padding: 10px 24px;
  background: #2563eb;
  color: white;
  border-radius: 8px;
  text-decoration: none;
}

/* Меню в строку (до flexbox это был стандарт) */
nav a {
  display: inline-block;
  padding: 8px 16px;
}
Пример display inline-block: теги и кнопки стоят в одной строке и имеют width height padding
inline-block совмещает строчное поведение с блочными размерами и отступами.

display: flex — гибкий контейнер

Flexbox — современный способ выстраивать элементы в строку или колонку с гибким управлением расстоянием и выравниванием. Подробно разобрано в отдельной статье про Flexbox.

.container {
  display: flex;
  gap: 16px;
  align-items: center;       /* по вертикали */
  justify-content: space-between; /* по горизонтали */
}

/* Частые паттерны с flex */

/* Центрировать что угодно */
.center {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Навбар: лого слева, меню справа */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 24px;
}

/* Карточки в ряд */
.cards {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;  /* переносить на новую строку если не влезает */
}

/* display: inline-flex — flex-контейнер, но inline (не занимает всю строку) */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
Пример display flex: navbar, карточки в ряд и центрирование элемента
display: flex превращает родителя в гибкий контейнер для выравнивания и распределения элементов.

display: grid — сеточный контейнер

CSS Grid — двумерная раскладка: управляет и строками и столбцами одновременно. Идеален для крупных структур: сетки карточек, страницы с сайдбаром, дашборды.

/* Сетка карточек */
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* 3 равные колонки */
  gap: 20px;
}

/* Адаптивная сетка без медиазапросов */
.auto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 24px;
}

/* Страница с сайдбаром */
.page-layout {
  display: grid;
  grid-template-columns: 280px 1fr;  /* сайдбар + контент */
  grid-template-rows: auto 1fr auto; /* header + main + footer */
  min-height: 100vh;
}
Пример display grid: layout с header sidebar main footer и сеткой карточек
display: grid подходит для двумерных раскладок: страниц, сеток карточек и дашбордов.

display: none — скрыть элемент

display: none полностью убирает элемент из потока — как будто его нет в HTML. Место не занимается. Это отличает его от visibility: hidden и opacity: 0.

/* display: none — убрать из потока, место не занимает */
.hidden { display: none; }

/* visibility: hidden — скрыть визуально, место сохраняется */
.invisible { visibility: hidden; }

/* opacity: 0 — прозрачный, место занимает, события работают */
.transparent { opacity: 0; }

/* Частое использование: адаптивное меню */
.mobile-menu { display: none; }

@media (max-width: 768px) {
  .mobile-menu   { display: block; }
  .desktop-nav   { display: none; }
}

/* Показать/скрыть через JavaScript */
.modal { display: none; }
.modal.is-open { display: flex; }
Сравнение display none, visibility hidden и opacity 0: место в layout и клики
display: none убирает элемент из потока, visibility: hidden сохраняет место, opacity: 0 оставляет клики.

Таблица всех значений display

ЗначениеНовая строкаWidth/HeightОписание
blockДаДаБлочный — всю ширину
inlineНетНетСтрочный — по содержимому
inline-blockНетДаСтрочный + блочные свойства
flexДаДаFlex-контейнер (блочный)
inline-flexНетДаFlex-контейнер (строчный)
gridДаДаGrid-контейнер (блочный)
inline-gridНетДаGrid-контейнер (строчный)
noneСкрыть, убрать из потока
contentsУбрать box, сохранить детей
tableДаДаПоведение как у <table>
table-cellДаПоведение как у <td>
Карта значений CSS display: block, inline, inline-block, flex, grid, none, contents и table
Значения display делятся на потоковые, layout-контейнеры, скрытие и специальные режимы.

Сравнение: none, visibility: hidden, opacity: 0

СвойствоВидим?Место в layout?События (клики)?Анимируется?
display: noneНетНетНетНет
visibility: hiddenНетДаНетДа (видимость)
opacity: 0НетДаДа!Да (плавно)
/* Плавное появление через opacity + visibility */
.tooltip {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s, visibility 0.2s;
}

.tooltip.is-visible {
  opacity: 1;
  visibility: visible;
}
/* visibility: hidden убирает клики при opacity:0 */
/* Плавная анимация через opacity */

Часто задаваемые вопросы о CSS display

display: block vs inline-block — в чём разница?

block — занимает всю строку (ширину родителя), следующий элемент всегда начинается на новой строке. inline-block — занимает только место под содержимое, несколько таких элементов могут стоять в одной строке. Оба поддерживают width, height и все отступы. Пример: кнопки в строку делают через inline-block (или лучше через flex на родителе).

Как скрыть элемент в CSS?

Зависит от задачи: display: none — полностью убрать элемент, место не занимается (используй для скрытия меню, модалок). visibility: hidden — скрыть визуально, но место в layout сохраняется (редко нужно). opacity: 0 — прозрачный, место занимает, клики работают (используй для анимаций появления). Для анимированного скрытия обычно комбинируют: opacity: 0; visibility: hidden; transition: opacity 0.3s.

Когда использовать flex, а когда grid?

Flex — для одномерных раскладок: строка элементов (навбар, список кнопок, карточки в ряд). Flex управляет либо строками, либо колонками. Grid — для двумерных раскладок: сетки карточек, страницы со структурой (header/sidebar/main/footer). Grid управляет и строками и колонками одновременно. На практике часто используют оба: Grid для структуры страницы, Flex для выравнивания внутри компонентов.

Сравнение Flex и Grid: одномерная строка элементов и двумерная сетка
Flex выбирают для одномерных раскладок, Grid — для двумерной структуры страницы или сетки.
Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x