Возможные варианты решения:
1. Задать overflow: hidden для элемента сквозь который проходит margin (чтобы убрать это прохождение).
2. Указать margin-bottom впередиидущему элементу (вместо margin-top текущему). Не забываем про схлопывание вертикальных margin.
3. Использовать padding-top для контейнера внутри которого находится элемент.
4. При использовании "position: relative" дать нижний margin на размер сдвига, у родителя при этом должен быть "overflow: hidden". Или вместо этого использовать padding-bottom родителя на размер сдвига (т.е. 20px в вашем случае).