作業中のプロジェクトのボタンにクリック/タッチ アニメーションを追加しようとしていますが、要素を表示および非表示にするボタンのアニメーション化に関してイライラする問題に遭遇しました。
このプロジェクトは、いくつかのボタンを備えた単一ページのモバイル Web アプリです。jQueryを使用して、ボタンが押されたときにボタンにcssキーフレームアニメーションを設定しています。このボタンは現在のページを隠し、新しいページを表示します。問題は、ボタンをクリックすると、アニメーションが完了する前にページが変更され、コンテナが非表示になっている間にアニメーションが一時停止することです。コンテナーが再表示されると、非表示になっていた場所からアニメーションが再開され、webkitAnimationEnd イベントがトリガーされます。
コンテナーは、次のように表示および非表示にされます。
display: none;
これを次のように変更することはできません:
visibility: hidden;
コンテナはまだスペースを占有するためです。要素が非表示になったときにアニメーションを強制的に削除したり、コンテナが非表示になったときにアニメーションを強制的に続行したりする簡単な方法はありますか?
編集:明確にするために、これは私がjavascriptに適用しているキーフレームアニメーションです:
@-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);
}
}
そして、これはアニメーションを要素に適用するために持っているJavaScriptです:
$('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' });
});