Контрастность текста и элементов интерфейса напрямую влияет на удобство восприятия информации. В Carbon Components Svelte для управления контрастностью используются предопределённые переменные темы и классы, которые обеспечивают соответствие стандартам WCAG (Web Content Accessibility Guidelines).
Основные моменты:
Carbon Components Svelte наследует переменные из Carbon Design System. Ключевые переменные, влияющие на контраст:
$interactive-01: #0f62fe; // Основной интерактивный цвет
$text-01: #161616; // Основной цвет текста
$text-02: #525252; // Вторичный текст
$ui-background: #ffffff; // Фоновый цвет интерфейса
Советы по использованию:
$interactive-01 на светлом фоне
или $interactive-01-02 на тёмном.$ui-background должны
использовать $text-01 для максимальной читаемости.$text-02 и не
должны превышать 70% от основного контраста.Кнопки (Button.svelte)
kind (primary,
secondary, tertiary) автоматически применяет
соответствующие контрастные цвета.bx--btn и переменных темы.hover,
disabled, active) через
:global(.bx--btn:disabled).Информационные карточки
(Card.svelte)
bx--card--inverse.Таблицы (DataTable.svelte)
bx--data-table--zebra с корректными оттенками серого для
соблюдения контраста.
bx--type-body-short-01 или
bx--type-heading-02 для соответствия типографике и
контрасту.Читаемость тесно связана с размером, высотой строки и межбуквенным интервалом. Carbon Components Svelte предлагает стандартизированные классы типографики:
bx--type-body-short-01 – для основного текстаbx--type-body-long-01 – для длинных описанийbx--type-heading-01 – для крупных заголовковИспользование этих классов гарантирует оптимальный контраст и линейное восприятие текста, особенно при смене темы.
Можно создавать утилиты для динамического подсчета контраста с помощью Svelte reactive statements:
Контраст текста: {contrastRatio.toFixed(2)}:1
Это позволяет мониторить контрастность в реальном времени и автоматически корректировать цвета компонентов при изменении темы или пользовательских настроек.