Con lo que hemos visto podemos hacer un toggle animado. Aquí va cómo podrías hacerlo 👇
.
Paso 1 - Estructura
Crea un contenedor que tenga adentro: un checkbox y un div que será nuestro toggle que se moverá
<div class="Container">
<input type="Checkbox" name="" id="" class="Checkbox">
<div class="Toggle"></div>
</div>
Para este momento solo deberás ver el checkbox
Paso 2 - Estilos
Aplica los estilos para que se vea como un toggle. En este caso solo deberás agregar las esquinas redondeadas y hacer que el checkbox ocupe todo el espacio disponible (para que el usuario pueda darle click en cualquier lugar del contenedor). Si todavía no hemos escondido el checkbox se deberá ver así

Paso 3 - Esconder el checkbox
Ahora hay varias maneras de esconder el checkbox. La que voy a elegir va a ser la de poner opacity: 0 para esconder el checkbox

Paso 4 - Animar el toggle
Ahora si se viene lo chido 👏 los checkboxes tienen la pseudo-clase :checked por lo cual lo utilizaré como trigger para disparar la animación. Así que para animar el toggle lo único que tengo que hacer es mover nuestro elemento Toggle a la derecha unos 48px ya que eso es el ancho del contendor. Para eso aplico las siguientes propiedades:
.Toggle {
/** Otras propiedades **/
position: absolute;
top: 1px;
left: 2px; /**Al comienzo se ubica a la izquierda**/
transition: transform 100ms linear; /** Defino la animación **/
}
.Checkbox:checked ~ .Toggle {
transform: translateX(48px); /** Mover el elemento a la derecha **/
}
transition para definir cuanto va a durar la animación y la aceleración de la animación
transformpara mover el elemento a la derecha
Fin
Y eso es todo amiguitos 🐇 Para ver este proyecto en acción pueden verlo en este Codepen si tienes problemas para posicionar los elementos. Y ver esta animación en acción.