Ваши width:100%
на div вообще не нужны. Div - это элементы уровня блока, которые автоматически расширяются до 100% своего контейнера. Удалите width:100%
из вашего объявления div, и отступ будет содержаться в родительском контейнере, без прокрутки или расширенной ширины.
НЕ используйте отрицательную маржу, это просто добавление хака для достижения чего-то простого.
Вы можете использовать это правило в целом: вам почти никогда не придется помещать width:100%
в div (я не могу придумать, почему бы вам, если бы оно не отображалось в строке или что-то в этом роде), потому что, как упоминалось выше элементы уровня блока всегда расширяются до 100% своего контейнера
edit: глупо было предложить установить ширину 100% для отображаемой строки в div, поскольку вы не можете установить размеры для встроенного элемента