Утилитарный класс

Оригинальное название: utility

Коротко

CSS-класс, который делает одну узкую вещь: задаёт отступ, выравнивание, цвет или скрывает элемент. Из таких классов собирают оформление прямо в HTML-разметке.

Что такое «Утилитарный класс»

Обычный, «семантический» класс описывает, что это за блок: .product-card, .site-header, — а все его стили лежат в CSS. Утилитарный класс описывает, как блок выглядит: .text-center, .mt-4, .d-none. Каждое такое правило содержит одно-два свойства, и смысл класса понятен по названию без заглядывания в файл стилей.

Небольшой набор утилит есть почти в каждом проекте — например, класс для визуально скрытого текста или сброса отступа. Подход utility-first идёт дальше: почти вся вёрстка собирается из утилит, а собственный CSS пишется редко. На этом построен Tailwind CSS; в Bootstrap утилиты дополняют готовые компоненты. Встречаются они и в WordPress: редактор блоков добавляет к разметке классы вроде has-text-align-center или has-large-font-size.

Пример

/* утилиты в стиле Bootstrap */
.mt-0        { margin-top: 0 !important; }
.text-center { text-align: center !important; }
.d-none      { display: none !important; }

<!-- разметка в стиле Tailwind -->
<button class="px-4 py-2 rounded-lg bg-blue-600 text-white hover:bg-blue-700">
  Отправить
</button>

В Bootstrap утилиты объявлены с !important: класс должен сработать, даже если у компонента более сильная специфичность. В Tailwind значения отступов и цветов берутся из единой шкалы, поэтому разработчик не может случайно поставить 13 пикселей там, где принято 12 или 16.

Плюсы и минусы подхода

  • Плюсы. Не нужно придумывать имена классов. CSS почти не растёт с развитием проекта: новые страницы переиспользуют те же утилиты. Правка видна прямо в разметке, и её не надо искать по файлам стилей.
  • Минусы. Разметка становится длинной и шумной. Одинаковые наборы классов повторяются в десятках мест, и изменить вид всех кнопок разом без шаблонов или компонентов трудно. Новичку в проекте сложнее читать HTML.

Как совместить с обычными стилями

Повторяющиеся сочетания утилит выносят в компонент шаблона (в PHP-шаблоне, React или Vue) либо в собственный класс. Во втором случае помогают миксины препроцессора или директива @apply в Tailwind. Чтобы утилиты надёжно перебивали стили компонентов без !important, их помещают в отдельный слой каскада, объявленный последним: @layer base, components, utilities;. На готовых темах WordPress и шаблонах Битрикса разумнее добавлять несколько утилит точечно, чем переводить всю вёрстку на новый подход.

Обновлено:

Все термины раздела «Frontend»

Что будем искать? Например,Продвижение