Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Стили и дизайн-системы
styling_design_systems

Стили и дизайн-системы

Каскад, CSS Modules, design tokens, варианты, headless-компоненты, темы, адаптивность и визуальные контракты.

Открыть лабораториюv0.1.0Запускается локально из публичного репозитория

Стили и дизайн-системы

Дизайн-система — это набор ограничений и контрактов, а не папка случайных компонентов одного цвета.

#Результат урока

Вы построите themeable components на tokens, разделите structure/skin и защитите variants и responsive behavior.

До начала достаточно component API design, accessibility и современный CSS. В конце должен появиться не конспект, а Button/Card/Dialog primitives с tokens, темой, container-aware layout и visual tests.

#1. Cascade и локальная область

Cascade учитывает origin, layer, specificity и order. CSS Modules дают локальные class names, но global tokens и cascade продолжают работать. Не решайте конфликт постоянным повышением specificity/important; проектируйте layers и ownership.

Рабочая проверка. Разделите reset/base/components/utilities layers.

Типичная поломка. Selector .page .card div span как API компонента.

#2. Semantic design tokens

Raw palette/spacing primitives преобразуются в semantic tokens поверхности, текста, акцента, danger и focus. Components используют semantic layer; тема меняет mapping. Token names описывают роль, не конкретное значение и не component instance без причины.

Рабочая проверка. Перенесите Button colors на semantic custom properties.

Типичная поломка. Hex и magic spacing в каждом component.

#3. Variants как конечный контракт

Variant props — literal unions, согласованные с CSS recipes. Compound variants описывают реальные сочетания; не генерируйте class names из произвольной пользовательской строки. Размер, tone и emphasis независимы только если все комбинации поддержаны.

Рабочая проверка. Составьте matrix variants/states.

Типичная поломка. className={"button-" + userValue}.

#4. Темы через variables, не JSX branches

Theme provider задаёт data attribute/class и semantic custom properties. Components остаются теми же; SSR должен выдать начальную theme или ранний script без flash/hydration mismatch. System preference — default, user choice — persisted override с defined policy.

Рабочая проверка. Переключите light/dark без remount subtree.

Типичная поломка. isDark ? <DarkButton> : <LightButton> для каждого component.

#5. Responsive и container queries

Viewport media queries отвечают за глобальную среду, container queries — за доступное место component. Reusable card не должна знать страницу; объявите container и адаптируйте внутренний layout. Используйте logical properties и content-driven breakpoints.

Рабочая проверка. Покажите Card в sidebar и main grid одной ширины viewport.

Типичная поломка. JS window.innerWidth для каждого layout decision.

#6. Motion и reduced motion

Motion объясняет изменение и сохраняет continuity, но не задерживает основное действие. CSS transitions предпочтительны простым states; layout/exit choreography требует инструмента и cleanup. prefers-reduced-motion убирает несущественное движение, сохраняя состояние понятным.

Рабочая проверка. Добавьте reduced-motion вариант dialog transition.

Типичная поломка. Анимация 800ms перед доступностью результата.

#7. Headless primitive и skin

Headless layer реализует state machine, aria и keyboard; styled layer задаёт tokens/layout. Разделение полезно, если есть несколько visual systems, но требует не разорвать обязательные props/refs. Иногда один integrated component проще и безопаснее.

Рабочая проверка. Соберите styled Select поверх headless contract.

Типичная поломка. Отдать consumer низкоуровневые aria детали без safe defaults.

#8. Visual regression как дополнение

Screenshot/visual tests ловят layout/color regressions в фиксированных stories и viewports. Они чувствительны к fonts/antialiasing и не доказывают behavior/accessibility. Стабилизируйте environment, маскируйте nondeterministic content и ревьюйте intentional diffs.

Рабочая проверка. Зафиксируйте variants matrix в двух темах.

Типичная поломка. Один screenshot homepage вместо component states.

#Лаборатория

Создайте mini design system: semantic color/spacing/type tokens, light/dark themes, Button variants, responsive Card grid, focus/disabled/high-contrast states и Storybook-like examples. Не используйте raw hex в components.

Критерий завершения: темы меняются без ветвления JSX, components не зависят от page selectors, contrast/focus/visual states проверены. Сначала зафиксируйте наблюдаемое поведение тестом или измерением, затем меняйте реализацию.

#Источники для сверки

  • MDN CSS cascade
  • W3C Design Tokens draft
  • MDN container queries

Устранение неисправностей

Проверьте свои знания

Вопросы ещё не добавлены

Вопросы для этой подтемы ещё не добавлены.

Далее: Производительность и React Compiler