Как изменить цвет радио кнопки в CSS: методика и примеры

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы хотите быстро изменить цвет радиокнопки, воспользуйтесь пользовательским CSS с псевдоэлементом :before для создания захватывающего внешнего вида.

HTML:

HTML
Скопировать код
<input type="radio" id="radioExample" name="group" hidden>
<label for="radioExample" class="radio-style"></label>

CSS:

CSS
Скопировать код
.radio-style {
  display: inline-block;
  width: 20px;
  height: 20px;
  border-radius: 50%; /* Формируем круглую форму. */
  background: #eee; /* Цвет фона для неактивной кнопки. */
  border: 2px solid #ccc; /* Рамка для контраста. */
}

.radio-style::before {
  content: '';
  display: inline-block;
  width: 100%;
  height: 100%;
  border-radius: 50%; /* Сохраняем круглую форму. */
  background: green; /* Задаем цвет для отображения активной кнопки. */
  opacity: 0; /* Сначала скрываем кнопку. */
  transition: opacity 0.3s; /* Устанавливаем плавное изменение непрозрачности. */
}

#radioExample:checked + .radio-style::before {
  opacity: 1; /* При активации кнопки делаем цвет видимым. */
}

В данном варианте мы меняем opacity в псевдоэлементе ::before, чтобы отобразить цвет при активации радиокнопки.

Модифицируйте свойство background в классе .radio-style для выбора цвета неактивной радиокнопки и в пределах ::before для определения цвета активного состояния.

Кинга Идем в IT: пошаговый план для смены профессии

Обуздание браузерных особенностей

Современные браузеры и accent-color

Новый CSS-атрибут accent-color позволяет менять цвета элементов пользовательского интерфейса, включая и радиокнопки. Однако в старых браузерах учёт этого свойства может быть нетривиальным:

CSS
Скопировать код
input[type='radio'] {
  accent-color: #ff4500; /* Задаем нужный цвет. */
}

Этот код будет работать в Chrome/Edge 93+, Firefox 92+ и Safari 15.4+. Возможны проблемы с совместимостью в старых версиях браузеров, когда вы используете новые CSS-свойства!

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Контролируем позиционирование и размер

Определение свойств position: relative и position: absolute для родительского элемента и псевдоэлемента :after соответственно позволяет точно управлять параметрами отображения:

CSS
Скопировать код
.radio-style {
  position: relative; /* Задаем родительское позиционирование. */
}

.radio-style::after {
  position: absolute; /* Позиционирование дочернего элемента. */
  top: 5px;
  left: 5px;
}

Воспользуйтесь функцией transform: scale(), чтобы варьировать размеры радиокнопок под разные дизайны без применения дополнительного кода JavaScript или изображений.

Выравнивание и взаимодействие

Доведение стилей до совершенства

При интеграции настраиваемых радиокнопок в системы сеток применяйте flexbox или grid layouts для улучшения отображения:

CSS
Скопировать код
.container {
  display: flex;
  align-items: center; /* Обеспечиваем вертикальное выравнивание. */
  justify-content: center; /* Располагаем элементы по центру. */
}

Не забывайте о состояниях :hover, :focus и :active, чтобы привлечь и удержать внимание пользователя.

Визуализация

Превращаем обычные радиокнопки в цветной элемент:

До: 🌼🌼🌼

Добавляем немного CSS-магии:

CSS
Скопировать код
input[type='radio']:checked {
  accent-color: #f00; /* Для отображения активного элемента используем красный цвет. */
}
input[type='radio']:not(:checked) {
  accent-color: #00f; /* Для неактивного элемента выбираем синий цвет. */
}

И теперь наша onload внешность выглядит так:

После: 🌹🌼🌼

Ваш интерфейс получил яркость и индивидуальность благодаря радиокнопкам!

Создание защиты от ограничений

Для более детальной настройки вы можете использовать пользовательские изображения или JavaScript-библиотеки, такие как Ryan Fait's. Когда возможностей CSS недостаточно, эти инструменты станут настоящей находкой:

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

Чекбокс-хак: обходимся без JavaScript

С помощью Чекбокс-хака можно вносить изменения в стили без использования JavaScript. Для этого используются чекбоксы, лейблы и псевдокласс :checked. Это похоже на использование секретного хода, открывающего множество возможностей:

HTML
Скопировать код
<input type="checkbox" id="toggle" hidden>
<label for="toggle" class="button">Переключить</label>

С помощью комбинатора типа соседа (+) и псевдокласса :checked реализовывайте изменения стиля:

CSS
Скопировать код
#toggle:checked + .button {
  background-color: #4CAF50; /* Элемент получает зеленый цвет при активации. */
}

Доступность радиокнопок

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

Полезные материалы

  1. Используйте изображения для радиокнопок – Stack Overflow — Радиокнопки могут быть стильными!
  2. ::before – CSS: Каскадные таблицы стилей | MDN — Псевдоэлементы открывают новые возможности в стилизации.
  3. Чекбокс-хак и его возможности | CSS-Tricks — Ключ к миру неограниченных CSS-техник.
  4. Can I use... Support tables for HTML5, CSS3, etc — Ваш гид в мире поддержки веб-технологий.
  5. :checked | CSS-Tricks — Не забывайте, что выбранный элемент управления требует особого подхода.
  6. Инклюзивно скрытые элементы | scottohara.me — Секреты стильной и доступной интерактивности.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой псевдоэлемент используется для изменения цвета активной радиокнопки?
1 / 5