TGViewer
Логово верстальщика Логово верстальщика @webdevlair · 7.96K subscribers
Post #4313 569
Cascade Layers в дизайн-системе: reset, vendors и utilities без войн специфичности

В дизайн-системах для SaaS, e-commerce и кабинетов reset, CSS из npm-пакетов, компоненты и utilities быстро начинают конкурировать. Частая ошибка - лечить это через !important, .foo.foo и порядок импортов.

Контракт слоев
Сначала зафиксируйте каскад явно:

@layer reset, vendors, tokens, base, components, utilities, overrides;


Чем слой правее - тем выше приоритет при одинаковом origin/importance. Специфичность работает внутри слоя, но между слоями сначала побеждает порядок @layer.

Production-пример
@import url("./reset.css") layer(reset);
@import url("./datepicker.css") layer(vendors);

@layer components {
.button { background: var(--accent); }
}

@layer utilities {
.bg-danger { background: var(--danger); }
}


Теперь .bg-danger предсказуемо переопределит фон компонента, даже если селектор компонента специфичнее. Не нужно делать .bg-danger.bg-danger или надеяться, что файл utilities подключится последним.

Практичная схема
* reset - нормализация браузерных стилей.
* vendors - datepicker, select, editor, carousel.
* tokens - CSS custom properties и темы.
* base - типографика и дефолты тегов.
* components - button, input, modal, tabs.
* utilities - атомарные override-классы.
* overrides - интеграционные фиксы, которые должны быть видимыми и редкими.

Важные нюансы
Стили вне @layer сильнее обычных layered-стилей. Поэтому договоритесь: весь CSS дизайн-системы живет в слоях, а приложение переопределяет ее через свой верхний слой.

@layer app-overrides;

@layer app-overrides {
.checkout .button { min-width: 240px; }
}


Предупреждение: у !important порядок слоев инвертируется. Не строите архитектуру вокруг него - layers нужны, чтобы снижать потребность в таких патчах.

Вывод:
@layer превращает каскад из побочного эффекта сборки в явный API дизайн-системы, повышая предсказуемость layout и снижая визуальные регрессии.
More from @webdevlair
  1. Sep 28, 2026Post #4646
  2. Sep 27, 2026Бумага и ручка: стартап заставил соискателей писать сопроводительные вручную Стартап Dumb…
  3. Sep 27, 2026Post #4644
  4. Sep 27, 2026Сигналы добрались до React-Redux В React Status #492 — React-Redux 9.4 Alpha притащил опци…
  5. Sep 27, 2026Post #4642
  6. Sep 26, 2026500+ баксов в месяц за ChatGPT? Не, у нас столько не завалялось Запуска пока нет. Но новый…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →