У меня была та же проблема. Переход «отлично работал», когда «рушился», но появился без перехода (например, «включен») при «расширении», когда раньше был установлен «display: none».
Я случайно пришел к рабочему решению в то время как отладка: просто запрос «offsetHeight», кажется, заставляет внутреннюю повторную визуализацию элемента.
что-то вроде этого:
showElement = function(){
...
oEl.style.display = "block";
var xDump = oEl.offsetHeight;
oEl.className = "show";
}
xDump никогда не используется, но имея его, сделал разницу.