Классы отображения задают свойство display: блок, строку, флекс- или
грид-контейнер, часть таблицы или полное скрытие. Берите их, когда элементу
нужен другой способ раскладки, чем у его тега, или когда элемент показывают
и скрывают в зависимости от ширины экрана.
Пример
Блок и строка
Один и тот же элемент с шириной и отступами внутри абзаца. Подпись над
образцом — класс, который на нём стоит.
inline
Текст до элемента ширина не действует, отступы не раздвигают строки и текст после него в той же строке.
inline-block
Текст до элемента стоит в строке, принимает ширину и текст после него в той же строке.
block
Текст до элемента занимает всю строку и текст после него с новой строки.
HTML
<divclass="flex flex-col gap-4 color-on-surface">
<divclass="flex flex-col gap-1">
<codeclass="text-1/2 color-on-surface-variant">inline</code>
<pclass="m-0">Текст до элемента <spanclass="inline w-e8 p-1 bg-primary-container color-on-primary-container border border-primary">ширина не действует, отступы не раздвигают строки</span> и текст после него в той же строке.</p>
</div>
<divclass="flex flex-col gap-1">
<codeclass="text-1/2 color-on-surface-variant">inline-block</code>
<pclass="m-0">Текст до элемента <spanclass="inline-block w-e8 p-1 bg-primary-container color-on-primary-container border border-primary">стоит в строке, принимает ширину</span> и текст после него в той же строке.</p>
</div>
<divclass="flex flex-col gap-1">
<codeclass="text-1/2 color-on-surface-variant">block</code>
<pclass="m-0">Текст до элемента <spanclass="block p-1 bg-primary-container color-on-primary-container border border-primary">занимает всю строку</span> и текст после него с новой строки.</p>
</div>
</div>
Флекс и грид
flex и grid раскладывают прямых потомков; варианты с inline- делают то же,
но сам контейнер стоит в строке текста.
flow-root удерживает внутри себя плавающий блок. content убирает область
обёртки: её потомки раскладываются как потомки родителя. Красная рамка
показывает обёртку, которая без класса остаётся одним флекс-элементом.
hidden убирает элемент из раскладки. С префиксом ширины класс действует от
указанной ширины и шире. Меняйте ширину окна просмотра: начиная с ширины md одни образцы
появляются, другие скрываются, а последний перестраивается в строку.
Условия (что это): ширина экрана — sm:, md:, lg:, xl:, xxl:; состояния — нет. Например: sm:block.
Классы и переменные собраны из CSS выпуска и обновляются вместе с ним.
Применение
Блок и строка
block занимает всю ширину строки и начинается с новой строки. inline
встаёт в текст и не принимает ширину, а вертикальные отступы не раздвигают
строки. inline-block стоит в строке, но принимает размеры и отступы, как
блок. list-item делает блок пунктом списка с маркером.
HTML
<spanclass="inline-block p-1">В строке, но с отступами</span>
Флекс и грид
Направление, перенос, выравнивание и колонки задают классы своих разделов;
flex и grid только включают раскладку.
table, table-row-group, table-row, table-cell и другие табличные
классы раскладывают обычные элементы как таблицу. display-table — второе
имя table с тем же значением. Для табличных данных используйте
<table>: табличные классы меняют только вид, а не смысл разметки.
Показ и скрытие на разных экранах собираются из двух классов: базового и
класса с префиксом ширины.
HTML
<navclass="hidden md:block">Видна от ширины md</nav>
<buttontype="button"class="md:hidden">Видна до ширины md</button>
Ограничения
У элемента с content нет своей области: его фон, рамка и внутренние
отступы не рисуются. Не ставьте этот класс на элементы со смыслом —
кнопки, списки, заголовки таблиц: вспомогательные технологии могут потерять
их роль.
hidden скрывает элемент и от программ экранного доступа. Текст, который
нужно скрыть только визуально, скрывайте классом
sr-only.
У семейства нет префиксов состояния: hover:hidden и подобные классы не
существуют.