display — одно из самых важных CSS-свойств. Оно определяет, как элемент занимает место на странице и как взаимодействует с соседями.
Основные значения
block — блочный элемент
- Занимает всю доступную ширину
- Начинается с новой строки
- Уважает
width,height,margin,paddingпо всем сторонам
div, p, h1, h2, h3, section, article, header, footer, nav {
display: block; /* по умолчанию для этих тегов */
}
<p>Первый абзац — занимает всю ширину</p>
<p>Второй абзац — тоже с новой строки</p>
inline — строчный элемент
- Занимает только столько ширины, сколько нужно контенту
- Не начинается с новой строки — стоит в потоке текста
widthиheightне работаютmargin-topиmargin-bottomне работают
span, a, strong, em, code {
display: inline; /* по умолчанию для этих тегов */
}
<p>Текст с <strong>жирным</strong> и <a href="#">ссылкой</a> в строке</p>
inline-block — компромисс
- Стоит в строке как
inline(не переносится) - Но уважает
width,height,padding,marginкакblock
.tag {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
background: #eff6ff;
color: #2563eb;
font-size: 0.75rem;
}
<span class="tag">Python</span>
<span class="tag">FastAPI</span>
<span class="tag">Backend</span>
Три тега окажутся в одну строку, каждый с паддингом.
none — скрыть элемент
.hidden {
display: none; /* элемент исчезает, место не занимает */
}
Отличие от visibility: hidden — при display: none элемент убирается из потока, при visibility: hidden место остаётся.
Теги по умолчанию
block |
inline |
|---|---|
div, p, h1–h6 |
span, a, strong, em |
section, article, nav |
img, button, input |
header, footer, main |
label, code, abbr |
Примечание: img, button, input — технически inline-block по умолчанию.
Центрирование блока с margin: auto
Классический способ центрировать блочный элемент по горизонтали:
.container {
width: 800px; /* должна быть задана ширина */
max-width: 100%; /* не выходить за экран */
margin-left: auto;
margin-right: auto;
/* Коротко: */
margin: 0 auto;
}
margin: auto не работает для вертикального центрирования (для этого нужен Flexbox).
Когда что использовать
| Задача | Решение |
|---|---|
| Обёртка страницы | display: block + margin: 0 auto |
| Теги/метки рядом | display: inline-block |
| Спрятать элемент | display: none |
| Ряд карточек | display: flex (следующая статья) |
| Текст в строке | display: inline (по умолчанию для span) |
DevBlog: пример с тегами статьи
<div class="post-tags">
<span class="tag">Python</span>
<span class="tag">FastAPI</span>
<span class="tag">REST API</span>
</div>
.post-tags {
margin-top: 12px;
}
.tag {
display: inline-block;
padding: 3px 10px;
margin-right: 6px;
border-radius: 999px; /* таблетка */
background: #eff6ff;
color: #2563eb;
font-size: 0.75rem;
font-weight: 500;
}
Переключение через JavaScript
display часто переключают через JS для показа/скрытия меню, модальных окон:
<div class="mobile-menu" id="menu">
<a href="/">Главная</a>
<a href="/articles/">Статьи</a>
</div>
<button onclick="document.getElementById('menu').style.display = 'block'">
Открыть меню
</button>
Или через CSS-классы:
.mobile-menu {
display: none;
}
.mobile-menu.is-open {
display: block;
}
menu.classList.toggle('is-open');
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!