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

Разметка радиокнопок

<ul class="switcher">
  <li class="switcher__item">
    <input
      type="radio"
      name="switch"
      value="switch1"
      id="switch1"
      class="default-radio"
      checked="checked"
    />
    <label class="custom-radio" for="switch1">Switch 1</label>
  </li>
  <li class="switcher__item">
    <input
      type="radio"
      name="switch"
      value="switch2"
      id="switch2"
      class="default-radio"
    />
    <label class="custom-radio" for="switch2">Switch 2</label>
  </li>
  <li class="switcher__item">
    <input
      type="radio"
      name="switch"
      value="switch3"
      id="switch3"
      class="default-radio"
    />
    <label class="custom-radio" for="switch3">Switch 3</label>
  </li>
  <li class="switcher__item">
    <input
      type="radio"
      name="switch"
      value="switch4"
      id="switch4"
      class="default-radio"
    />
    <label class="custom-radio" for="switch4">Switch 4</label>
  </li>
  <li class="switcher__item">
    <input
      type="radio"
      name="switch"
      value="switch5"
      id="switch5"
      class="default-radio"
    />
    <label class="custom-radio" for="switch5">Switch 5</label>
  </li>
</ul>

Стилизация радиокнопок

Комментарии даны в коде.

.switcher {
  display: flex; /* Размещаем кнопки в ряд */
  user-select: none; /* Запрещаем выделение при клике */
}

/* Скрываем браузерные радиокнопки */
.switcher .default-radio {
  display: none;
}

/* Стилизуем кастомные радиокнопки */
.switcher__item .custom-radio {
  display: inline-block;
  padding: 15px 20px;
  color: #111;
  border: 1px solid #999;
  border-right: none;
  cursor: pointer;
}

/* Стили при наведении */
.switcher__item label:hover {
  background-color: #f5f5f5;
}

/* Закругление для первой кнопки */
.switcher__item:first-child label {
  border-radius: 5px 0 0 5px;
}

/* Закругление для последней кнопки */
.switcher__item:last-child label {
  border-right: 1px solid #999;
  border-radius: 0 5px 5px 0;
}

/* При состоянии checked - меняем цвет кнопки */
.switcher__item input:checked + label {
  background-color: #ffeac4;
}

Получаем значение

Функция getSwValue получает значение выбранной радио кнопки.

const swithes = document.querySelectorAll(".default-radio");

swithes.forEach((sw) => {
  sw.addEventListener("change", getSwValue);
});

function getSwValue(e) {
  console.log(e.target.value);
}