Метод называется checkbox hack.
Мы на самом деле используем checkbox и его превосходное свойство работать даже при нажатии на метку, которая с ним ассоциирована. Таким образом мы скрываем сам нативный checkbox, а его метку стилизуем так, как нам надо, хоть в виде кнопки, хоть в виде чего угодно. И вместо :active у кнопки проверяем :checked у чекбокса
https://css-tricks.com/the-checkbox-hack/
А вот ещё набор идей
https://codepen.io/
В поиске наберите "toggle-switch"
И вот что-то похожее на ваш случай