display: block, inline, inline-block, none
Свойство
displayопределяет тип отображения элемента в потоке документа: как он занимает пространство, принимает ли размеры и как взаимодействует с соседними элементами.
Зачем нужно
display — одно из самых фундаментальных свойств CSS. Именно оно определяет, будет ли элемент на новой строке или в потоке текста, можно ли задать ему width/height, и как он себя ведёт в потоке. Это первый шаг перед переходом к flex, grid и другим значениям.
Где используется
block— параграфы, заголовки, секцииinline— ссылки,<span>, курсив внутри текстаinline-block— навигационные ссылки с padding, кнопкиnone— скрытие элементов, тоггл видимости
block
Блочные элементы занимают всю доступную ширину, начинаются с новой строки и принимают width/height.
div, p, h1, section { display: block; } /* по умолчанию */
.block {
display: block;
width: 300px;
height: 100px;
margin: 16px 0;
}
<p>Первый параграф — блочный</p>
<p>Второй параграф — на новой строке</p>
inline
Строчные элементы занимают только ширину контента, не начинают новую строку. width/height не работают; вертикальные margin игнорируются.
span, a, em, strong { display: inline; } /* по умолчанию */
.highlight {
display: inline;
background: yellow;
/* width: 200px; — не работает */
}
<p>Текст с <span class="highlight">выделением</span> внутри строки.</p>
inline-block
Элемент ведёт себя как inline (не разрывает строку), но принимает width, height, вертикальные margin и padding.
.btn {
display: inline-block;
width: 120px;
height: 40px;
padding: 8px 16px;
text-align: center;
vertical-align: middle;
}
<a class="btn" href="/">Главная</a>
<a class="btn" href="/about">О нас</a>
<!-- Кнопки в строку, но с точным контролем размеров -->
none
Элемент полностью убирается из потока — не занимает места, не виден, не кликабелен.
.modal {
display: none; /* скрыто по умолчанию */
}
.modal.open() {
display: block; /* показано */
}
Отличие от visibility: hidden: none убирает элемент из потока; hidden сохраняет место.
Сравнительная таблица
| Свойство | Новая строка | width/height | Вертикальный margin |
|---|---|---|---|
block |
да | да | да |
inline |
нет | нет | нет |
inline-block |
нет | да | да |
none |
— | — | — |
Частые ошибки
widthнаinline-элементе —<span>сwidth: 200pxне изменит размер; нуженdisplay: inline-blockилиblock- Пробелы между
inline-block— пробелы в HTML междуinline-blockэлементами создают видимые зазоры; решение:font-size: 0на родителе или Flexbox display: noneвместо визуального скрытия для доступности —display: noneскрывает и от скринридеров; для визуального скрытия с сохранением доступности используйте.sr-onlyкласс
Связанные темы
- display flex и inline-flex
- display grid и inline-grid
- box-sizing -- content-box vs border-box
- _MOC CSS