Como reverter suavemente a animação CSS para seu estado atual?

eu tenhonão animado elemento como padrão. Há também um gatilho que permite ativar e desativar a animação nesse elemento. A animação em si é muito simples: move o elemento da esquerda para a direita e para trás.

Quando paro a animação, meu elemento obviamente volta à posição inicial. Mas ele volta repentinamente, sem problemas. Então, ele muda de posição quando desativei a animação para a inicial. Minha pergunta é: existe uma maneira de interrompê-lo sem problemas, então quando desligo a animação, ela volta à posição inicial, mas sem problemas / animando.

Aqui está o meu elemento e animação:http://jsfiddle.net/2Lwftq6r/

HTML:

<input type="checkbox" id="anim">
<label for="anim">Start / stop animation</label>
<div></div>

CSS:

div { 
    margin-top: 50px;
    width: 50px; height: 10px;
    background: #000;
    transform: translateX(0);
}

#anim:checked ~ div {
    -webkit-animation: dance 2s infinite ease-in-out;
    -moz-animation: dance 2s infinite ease-in-out;
}

@-webkit-keyframes dance {
  0%, 100% { -webkit-transform: translateX(0); }
  50% { -webkit-transform: translateX(300px); }
}
@-moz-keyframes dance {
  0%, 100% { -moz-transform: translateX(0); }
  50% { -moz-transform: translateX(300px); }
}

questionAnswers(3)

yourAnswerToTheQuestion