Если меню не фиксированное, можно использовать transform (CSS) – в нужных позициях положение меню изменится (визуально), но влияния на соседние элементы не будет. Плюс делаете transition (CSS) на transform, и получите плавную анимацию меню. Можно сделать на JS через CSS-классы.