Используйте
visibility: hidden;
pointer-events: none;
вместо
display: none;
и
visibility: visible;
pointer-events: auto;
вместо
display: block;
Анимация будет работать так, как вы описали. Pointer-events отключается для того, чтобы скрытый элемент не мешал наведению и кликам по элементам под ним (если он будет абсолютно позиционирован или перемещен и что-то окажется снизу).