STATUS IS UPВИКИ ПО ОПТИМИЗАЦИИ САЙТОВ
13Включить
Дизайн и UX / Включить

Доступность темного режима: контраст, выбор и тестирование

Реализуйте темный режим как проверяемый вариант интерфейса: сохраняйте читаемый контраст, видимую фокусировку, пригодные изображения, нативные элементы управления и пользовательские переопределения перед релизом.

Доступность темного режима: контраст, выбор и тестирование — ВИЗУАЛЬНОЕ РУКОВОДСТВО
ЧИТАТЬ
8 мин
ИСТОЧНИКИ
8
ПОВТОРНО ПРОВЕРИТЬ
2027-03-27
проверено
Фронтенд-ревьюер, учитывающий доступность, с ответственностью за управление релизом
КРАТКИЙ ОТВЕТ

Начните с решения.

Реализуйте темный режим как полноценную тему, а не простое инвертирование цветов. Определите семантические токены цвета для каждой значимой поверхности и состояния, используйте системное предпочтение операционной системы как начальную тему и предоставьте доступный ручной выбор, когда это оправдано продуктом. Тестируйте обе темы на страницах, где люди читают, входят в аккаунт, ищут, отправляют формы и оплачивают. Тема готова только тогда, когда критические взаимодействия остаются различимыми и управляемыми.

Для базовой привязки к WCAG нормальный текст и изображения текста должны иметь контраст не менее 4.5:1; крупный текст — 3:1. Идентифицируемые элементы управления, обязательные состояния и значимая графика требуют 3:1 по отношению к соседним цветам. Сохраняйте видимый фокус клавиатуры, объявляйте поддерживаемые схемы браузера и проверяйте forced-colors режим. Автоматические проверки выявляют кандидатов, но человек должен пройти сценарии взаимодействия.

ВИЗУАЛЬНОЕ РУКОВОДСТВО

Видеть работу как систему.

Используйте эту карту, чтобы связать решения из статьи, прежде чем применять отдельные тактики.

SIUВключить
01Начните с выбора пользователя и системы токенов
02Измеряйте контраст в отрендеренной теме
03Защищайте фокус клавиатуры, формы и изменения состояний
04Обрабатывайте изображения, встроенные ресурсы и UI, предоставляемый браузером
01

Начните с выбора пользователя и системы токенов

Используйте системную настройку по умолчанию через prefers-color-scheme. Если вы предлагаете переключатель, сделайте его управляемым с клавиатуры, с доступным именем и программно доступным текущим выбором. Делайте приоритетом ручной выбор в этом контексте браузера; не обещайте, что он сохранится на другом устройстве или в приватном сеансе.

Называйте цвета по роли, а не по внешнему виду: canvas, surface, text, muted text, border, link, accent, error, success, focus и disabled. Отобразите каждую роль в обеих темах. Это предотвратит утечку светлого серого в тёмный режим и сделает исправления переиспользуемыми. Тёмная тема не является по умолчанию более доступной или универсально предпочтительной; это ещё один опыт, который нужно сделать пригодным для использования.

Приоритет темы

Документируйте порядок, например сохранённый выбор первым и системное предпочтение вторым, чтобы команды тестировали один и тот же результат.

Инвентаризация компонентов

Включите hover, focus, selected, invalid, disabled, loading, empty и visited-link состояния, а не только значения по умолчанию.

02

Измеряйте контраст в отрендеренной теме

WCAG 2.2 Success Criterion 1.4.3 задаёт минимум 4.5:1 для нормального текста и изображений текста и 3:1 для крупного текста. Не округляйте: 4.499:1 не соответствует 4.5:1. Тонкие начертания могут выглядеть слабее своего вычисленного цвета, поэтому используйте более плотный гарнитур или дополнительный отступ.

Проверяйте каждый отрисованный передний план и соседний фон. Текст поверх фото, градиентов, полупрозрачных панелей или видео имеет меняющиеся фоны, поэтому расчёт по одному токену не докажет читаемость. Используйте непрозрачный фон, достаточный оверлей или другое расположение, затем инспектируйте в реалистичных вьюпортах.

Элементы управления и графика

Согласно WCAG 2.1 Success Criterion 1.4.11, визуальная информация, необходимая для распознавания активного элемента управления, обязательного состояния или значимой графики, должна иметь 3:1 по отношению к смежным цветам.

Больше, чем оттенок

Сопоставляйте изменения цвета с текстом, иконкой, паттерном, положением или другим явным сигналом; состояния ошибки и выбора не должны полагаться на тонкий оттенок.

03

Защищайте фокус клавиатуры, формы и изменения состояний

Пройдитесь по вкладкам в обеих темах. Фокус должен быть видим на ссылках, кнопках, полях ввода, меню, диалогах, пользовательских виджетах и контроле темы. Не удаляйте outline браузера, если его замена не протестирована на каждой поверхности и в каждом состоянии. Смещённый outline часто яснее, чем расплывчатое свечение.

WCAG 2.2 Focus Appearance — это критерий уровня AAA, а не доказательство соответствия сайту уровню AA. Это полезная цель: индикатор площади по крайней мере такой же, как 2 CSS-pixel периметр, и контраст 3:1 между пикселями в фокусе и вне фокуса. Также проверьте, что состояния error, required, selected и unavailable сохраняют смысл.

Проверка форм

Тестируйте подсказку в поле, введённое значение, метку, подсказку помощи, текст ошибки, некорректную границу, отметку чекбокса, выбор радио и состояние отправки отдельно.

Оплата и чувствительные потоки

Для оформления заказа или другого регулируемого процесса используйте песочницу провайдера и при необходимости получите квалифицированное ревью по доступности и безопасности. Это образовательное руководство, а не оценка соответствия или безопасности.

04

Обрабатывайте изображения, встроенные ресурсы и UI, предоставляемый браузером

Проверьте логотипы, иллюстрации, скриншоты, диаграммы, иконки и текст, включённый в изображения, в обеих темах. Повторно использованный светлый логотип может исчезнуть, а легенда диаграммы перестать читаться, даже если окружающий HTML проходит. Предоставьте подходящий по назначению актив или стабильный фон. Изображения, которые передают инструкции, статус или данные, должны оставаться понятными.

Объявляйте поддержку светлой и тёмной схем, затем стилизуйте содержимое страницы для выбранной темы. Свойство color-scheme выравнивает канву браузера, полосы прокрутки, элементы форм и другой браузерный UI. Размещайте соответствующие метаданные рано в документе. Встроенный SVG может реагировать на родительскую схему; тестируйте сторонние iframe и виджеты сквозным образом.

Нативное прежде кастомного

Отдавайте предпочтение семантическим HTML-элементам управления. Поведение forced-color использует нативную семантику, а не роль ARIA, добавленную к универсальному элементу.

Принятие активов

Проверяйте скачанные, закешированные, медленно загружающиеся и упавшие изображения, особенно там, где текст или подсказки действий располагаются поверх медиа.

05

Уважайте forced-colors и тестируйте релиз как систему

Forced-colors режим применяет ограниченную палитру, выбранную пользователем, например Windows High Contrast. Браузеры могут заменять цвета, убирать тени и добавлять подложки к тексту. Не блокируйте переопределение. Делайте целевые исправления там, где компонент теряет границу или смысл, например используйте реальную границу там, где за средство взаимодействия отвечала тень. Эмуляция не может представить каждое устройство, браузер, расширение, уровень масштабирования или комбинацию вспомогательных технологий.

Пройдите матрицу маршрутов и взаимодействий в светлой, тёмной и forced-colors настройках до релиза. Chrome DevTools может эмулировать оба состояния; используйте это для ускорения обзора, затем вручную пройдите приоритетные сценарии. Сканеры находят кандидатов, но не могут самостоятельно определить доступность. SIU preflights критические тематические активы и взаимодействия, фиксирует gate релиза и сохраняет проверенный путь отката для серьёзных регрессий представления; это не мониторинг простоя.

Матрица покрытия

Включите посадочные страницы, навигацию, поиск, доступ в аккаунт, формы, страницы ошибок, экраны для аутентифицированных пользователей и потоки конверсии материалов.

Доказательства релиза

Сохраняйте протестированные URL, версии браузеров, настройки, исключения, владельца и триггер отката, чтобы исправление начиналось с фактов.

ДЕЙСТВИЕ / ПРОВЕРКА

Практический чек‑лист

  1. 01

    Инвентаризация поверхностей, где действует тема

    Перечислите общие компоненты и критические маршруты, включая взаимодействия и состояния валидации.

    ПРОВЕРИТЬ: У каждого элемента есть владелец для светлой и тёмной темы или он явно снят с поддержки.
  2. 02

    Определите семантические токены

    Соотнесите роли, такие как text, surface, link, border, error и focus, со значениями в обеих темах.

    ПРОВЕРИТЬ: Ни один продакшн-компонент не полагается на неописанный светлый буквальный цвет.
  3. 03

    Установите предсказуемый приоритет темы

    Используйте системное предпочтение как значение по умолчанию и, при наличии, делайте ручной выбор доступным и последовательно применяемым.

    ПРОВЕРИТЬ: Документированный тест показывает ожидаемый результат для system light, system dark и каждого ручного выбора.
  4. 04

    Проверьте контраст текста и UI

    Измерьте отрендеренный текст, элементы управления, маркеры состояний и значимую графику в каждой теме.

    ПРОВЕРИТЬ: Нормальный текст достигает 4.5:1, крупный текст и обязательная не-текстовая визуальная информация достигают 3:1 там, где применимы критерии WCAG.
  5. 05

    Тест фокуса клавиатуры и форм

    Навигация по всем приоритетным сценариям с Tab, Shift+Tab, Enter, Space и Escape по мере необходимости.

    ПРОВЕРИТЬ: Положение фокуса, подсказки об ошибках, выборы и результаты отправки остаются видимыми и понятными в обеих темах.
  6. 06

    Проверьте медиа и нативные контролы

    Просмотрите графические активы, встроенное содержимое, полосы прокрутки, поля ввода и оформление автозаполнения там, где доступно.

    ПРОВЕРИТЬ: Ни одна существенная метка, легенда, действие или нативный контрол не конфликтует с отрисованным фоном.
  7. 07

    Прогоните forced-colors режим

    Эмулируйте forced-colors и делайте только целевые обходы для элементов, которые теряют опознавательность или смысл.

    ПРОВЕРИТЬ: Ключевые контролы всё ещё имеют различимую границу или метку, и фокус клавиатуры остаётся явным.
  8. 08

    Комбинируйте автоматические и ручные проверки

    Запустите инструмент контрастности или доступности, затем вручную просмотрите пути задач, которые он не может оценить.

    ПРОВЕРИТЬ: Выявленные проблемы триажируются с участием человека; вывод инструмента не считается вердиктом соответствия.
  9. 09

    Оградите релиз и подготовьте исправления

    Зафиксируйте протестированную сборку, приоритетные URL, исключения, владельца и вариант отката/обратной развертки.

    ПРОВЕРИТЬ: Команда может идентифицировать известную хорошую сборку темы и условие, которое вызовет откат.
ВОПРОСЫ ДЛЯ ОБСУЖДЕНИЯ

Сравнивайте компромиссы, а не приватные данные.

Используйте эти вопросы с вашей командой или сообществом владельцев сайтов. Делитесь методами и уроками, но никогда не вставляйте учётные данные, данные клиентов или непубличные детали инфраструктуры.

  1. 01

    Какой компонент выявил самый неожиданный контрастный конфликт между светлой и тёмной темой, и как вы добавили его в проверки перед релизом?

  2. 02

    Как ваши дизайнеры и разработчики поддерживают согласованность токенов, состояний компонентов и графических активов при изменении брендовой палитры?

  3. 03

    Какие лёгкие доказательства релиза помогают вашей команде разрешить регрессию темы без передачи данных клиентов или аккаунтов?

ПОПУЛЯРНЫЕ / АВТОРИТЕТНЫЕ РЕСУРСЫ

Откройте исходные материалы.

W3C Web Accessibility InitiativeUnderstanding Success Criterion 1.4.3: Contrast (Minimum) ↗

Объясняет пороговые значения контраста WCAG для текста, исключения и предосторожности при измерении.

Проверено 2026-09-27
W3C Web Accessibility InitiativeUnderstanding Success Criterion 1.4.11: Non-text Contrast ↗

Используйте это для оценки контраста элементов управления, индикаторов состояний и значимой графики.

Проверено 2026-09-27
W3C Web Accessibility InitiativeUnderstanding Success Criterion 2.4.13: Focus Appearance ↗

Предоставляет модель размера и контраста фокуса уровня AAA, используемую здесь как дизайн-цель.

Проверено 2026-09-27
MDN Web Docsprefers-color-scheme CSS media feature ↗

Показывает, как браузеры экспонируют пользовательский запрос светлой или тёмной темы и поведение встроенного SVG.

Проверено 2026-09-27
MDN Web Docscolor-scheme CSS property ↗

Объясняет координацию canvas браузера, нативных контролов, полос прокрутки и связанного UI.

Проверено 2026-09-27
MDN Web Docsforced-colors CSS media feature ↗

Детализирует переопределения браузера, системные цвета, тени, подложки и ограничения автора.

Проверено 2026-09-27
Chrome for DevelopersEmulate CSS media features ↗

Даёт шаги в DevTools для проверки светлого, тёмного и forced-colors условий.

Проверено 2026-09-27
W3C Web Accessibility InitiativeEvaluating Web Accessibility Overview ↗

Объясняет, почему ручной обзор дополняет автоматизированные инструменты доступности.

Проверено 2026-09-27

Политика источников. Эта статья опирается на официальные документы W3C, MDN и Chrome, прочитанные на дату доступа. Ссылки на WCAG описывают технические критерии, а не юридические советы или сертификацию. Перепроверяйте поведение браузеров и результаты с вспомогательными технологиями в реальном развернутом опыте.

КРАТКИЕ УТОЧНЕНИЯ

Частые вопросы.

Сделает ли добавление тёмного режима сайт автоматически более доступным?

Нет. Тёмный режим может повысить комфорт для некоторых людей, но он также может ввести нечитаемый текст, невидимый фокус и непонятные состояния. Рассматривайте его как полноценную, независимо протестированную тему, а не как ярлык доступности.

Является ли 4.5:1 единственной проверкой контраста для тёмного режима?

Нет. Порог WCAG 4.5:1 применяется к нормальному тексту и изображениям текста. Крупный текст имеет порог 3:1, а обязательная визуальная информация элементов управления и значимая графика также требует 3:1 по отношению к соседним цветам. Фокус, изображения и некольоровые подсказки всё равно требуют проверки.

Должен ли каждый сайт предоставлять переключатель тёмного режима?

Системное предпочтение — практичная отправная точка. Ручной переключатель полезен, когда посетителям нужно переопределить этот выбор или вернуться к выбранной теме, но он должен быть доступным, предсказуемым и протестированным. Это продуктовое решение, а не само по себе доказательство доступности.

Status Is UP Editorial Team · Uptime Enablement Editors

Проверено Фронтенд-ревьюер, учитывающий доступность, с ответственностью за управление релизом. Опубликовано 2026-09-27; обновлено 2026-09-30.