You can see what is your problem using the dev tools.
You set initially:
.slideInLeft {
-webkit-animation-name: slideInLeft;
animation-name: slideInLeft;
}
and your idea is that this won't do anything because you haven't set the remaining porperties.
But, if you look at the real properties (with dev tools), you will see that the remaining properties are set to
-webkit-animation-delay: 0s;
-webkit-animation-direction: normal;
-webkit-animation-duration: 0s;
-webkit-animation-fill-mode: none;
-webkit-animation-iteration-count: 1;
-webkit-animation-name: slideInLeft;
-webkit-animation-play-state: running;
That means that the animation is already running !!
When you set the .visible class, then you change some of the animation properties, but it's too late, the animation has already finished.