JavaScript ne s'affiche pas après l'animation CSS3

J'ai des div avec id='mainmenu'. Je suis en ajoutant CSS3 transition en JavaScript une fois que le bouton de la souris (par l'ajout de "transition" à #mainmenu et par la création de la classe .fadein et .fadeout qui sera ajouté à l'élément div). Code:

<div id='mainmenu'></div>
<button id="btn1">Click me1</button>
<button id="btn2">Click me2</button>

#mainmenu {
    width:100px; 
    height:100px; 
    background:#eee; 
    -webkit-transition: opacity 1s; 
    -moz-transition: opacity 1s; 
    transition: opacity 1s; 
}

.fadeout {
    opacity:0;
}
.fadein {
    opacity:1;
}


var menu = document.getElementById('mainmenu'),
    btn1 = document.getElementById('btn1'),
    btn2 = document.getElementById('btn2');

btn1.addEventListener('click', function() {
    menu.className = 'fadeout';
}
btn2.addEventListener('click', function() {
    menu.className = 'fadein';
}

Le problème est que maintenant je veux ajouter un display none et de blocs de fadeout et fadein option. Ainsi, après la fadeout animation div devriez obtenir l'affichage aucun, et après fadein blocage d'afficheur:

btn1.addEventListener('click', function() {
    menu.className = 'fadeout';
    menu.style.display = 'none';
}
btn2.addEventListener('click', function() {
    menu.className = 'fadein';
    menu.style.display = 'block';
}

Malheureusement, l'écran et aucun bloc s'exécute avec l'animation, de sorte que l'animation ne fonctionne pas (élément reçoit présentent aucune, sans l'opacité de l'animation). Je veux d'abord l'animation avec l'opacité, et après que l'affichage none/block pour l'élément. Est-il possible de le faire? Je peux utiliser qu'un pur JavaScript (pas de jQuery, etc.).

source d'informationauteur Amay