Animacja CSS wstrzymuje się, gdy element jest ukryty

Pracuję nad dodaniem animacji click / touch do przycisków w projekcie, nad którym pracuję, i natknąłem się na frustrujący problem dotyczący animowania przycisków, które pokazują i ukrywają elementy.

Projekt to mobilna aplikacja sieciowa z jedną stroną, z kilkoma przyciskami na niej. Używam jQuery, aby ustawić animację klatki kluczowej css na przycisku, gdy jest on wciśnięty. Przycisk ukrywa bieżącą stronę i pokazuje nową. Problem polega na tym, że po kliknięciu przycisku strona zmienia się przed zakończeniem animacji, a animacja zostaje wstrzymana, gdy pojemnik jest ukryty. Gdy kontener zostanie ponownie wyświetlony, animacja będzie kontynuowana od miejsca, w którym była ukryta, a następnie wyzwalane jest zdarzenie webkitAnimationEnd.

Kontenery są pokazywane i ukryte za pomocą:

display: none;

Nie mogę zmienić tego na:

visibility: hidden;

ponieważ kontener nadal zajmuje miejsce. Czy są jakieś proste sposoby, aby zmusić animację do usunięcia, gdy element stanie się niewidoczny, lub wymusić kontynuację animacji, gdy kontener jest ukryty?

Edytuj: Dla wyjaśnienia jest to animacja klatek kluczowych, którą stosuję w javscript:

@-webkit-keyframes shrink
{
    0%
    {
        -webkit-transform: matrix(1, 0, 0, 1, 0, 0);
    }
    50%
    {
        -webkit-transform: matrix(0.95, 0, 0, 0.95, 0, 0);
    }
    100%
    {
        -webkit-transform: matrix(1, 0, 0, 1, 0, 0);
    }
}

I to jest javascript, który muszę zastosować animację do elementu:

$('body').on(_context.settings.platformInfo.device.touch ? 'touchstart' : 'mousedown', '.shrink', function ()
{
    var $item = $(this);

    $item.one('webkitAnimationEnd', function ()
    {
        $item.css({ '-webkit-animation': 'none' });
    }).css({ '-webkit-animation': 'shrink 250ms forwards' });
});

questionAnswers(5)

yourAnswerToTheQuestion