Стоит показать разметку и стили которые есть, т.к. искать решение надо из того, что есть.
Если хотите, чтобы один блок отображался поверх другого, значит этот другой блок должен выпадать из потока, а значит это position: absolute, ну и position: relative - в рамках какого блока он должен появиться.
Если absolute будет для блока, который сверху, то ничего съехать не должно.
Обходные пути - с помощью js, замена одного блока на другой.