Добавьте фирменный цвет в стандартные поля ввода HTML-форм всего одной строкой кода.
Опубликовано: 11 августа 2021 г.
Современные HTML-элементы форм сложно настраивать . Создаётся впечатление, что выбор стоит между минимальным количеством пользовательских стилей или полным их отсутствием, либо сбросом стилей полей ввода и созданием формы с нуля. Создание формы с нуля оказывается гораздо сложнее, чем ожидалось. Это также может привести к забыванию стилей для состояний элементов ( неопределённость , я обращаюсь к тебе) и потере встроенных функций доступности. Полное воссоздание того, что предоставляет браузер, может оказаться более трудоёмким, чем вы готовы взять на себя.
accent-color: hotpink;
CSS- accent-color из спецификации CSS UI позволяет окрашивать элементы одной строкой CSS-кода, избавляя вас от необходимости в индивидуальной настройке и предоставляя способ привнести ваш бренд в элементы.

Свойство accent-color также работает с color-scheme , позволяя авторам окрашивать как светлые, так и темные элементы. В следующем примере у пользователя активна темная тема, страница использует color-scheme: light dark и тот же accent-color: hotpink для элементов управления, окрашенных в ярко-розовый цвет и имеющих темную тему.

Поддерживаемые элементы
В настоящее время с помощью свойства accent-color можно изменять цвет только четырех элементов: checkbox , radio , range и progress . Предварительный просмотр каждого из них можно посмотреть здесь: https://accent-color.glitch.me в светлой и темной цветовых схемах.
Флажок
Радио
Диапазон
Прогресс
Гарантированный контраст
Чтобы предотвратить появление недоступных элементов, браузерам с accent-color необходимо определить подходящий контрастный цвет , который будет использоваться вместе с пользовательским акцентным цветом. Ниже приведен скриншот, демонстрирующий различия в алгоритмах Chrome 94 (слева) и Firefox 92 Nightly (справа):

Самое важное, что нужно извлечь из этого, — доверять браузеру . Укажите фирменный цвет и поверьте, что он будет принимать за вас разумные решения.
Дополнительно: Больше вариантов тонировки
Возможно, вас интересует, как затонировать не только эти четыре элемента формы? Вот минимальная песочница, в которой можно затонировать следующие элементы:
- кольцо фокусировки
- Выделение выделенного текста
- список маркеров
- Стрелочные индикаторы (только в Webkit)
- Ползунок полосы прокрутки (только для Firefox)
html {
--brand: hotpink;
scrollbar-color: hotpink Canvas;
}
:root { accent-color: var(--brand); }
:focus-visible { outline-color: var(--brand); }
::selection { background-color: var(--brand); }
::marker { color: var(--brand); }
:is(
::-webkit-calendar-picker-indicator,
::-webkit-clear-button,
::-webkit-inner-spin-button,
::-webkit-outer-spin-button
) {
color: var(--brand);
}
Потенциальное будущее
Спецификация не ограничивает применение accent-color только четырьмя элементами, показанными в этой статье; в дальнейшем может быть добавлена поддержка других элементов. Такие элементы, как выбранный <option> в <select> могут быть выделены с помощью accent-color .
Какие ещё варианты тонировки вы предпочитаете использовать в интернете? Напишите в Твиттере @argyleink , указав свой вариант, и он может быть добавлен в эту статью!