Hacky решение:
#slide-aniversariante-img-overlay {
width: 100vw;
position: relative;
left: 50%;
transform: translateX(-50%);
}
Объяснение:
Вы хотите сделать дочерний элемент вашего .container
(который имеет фиксированную ширину) шире, чем этот контейнер. Вы знаете ширину .container
для выбранной точки останова, но вы не можете сказать, сколько места доступно слева и справа.
Вы можете проверить это с помощью JavaScript, как вы уже пробовали, но затем вы вынуждены добавить прослушиватель событий после изменения размера (потому что эти значения будут меняться).
Выше я установил дочернюю ширину равной 100vw (100% ширины области просмотра), поэтому она имеет правильную ширину но мы не знаем значение поля, которое мы должны использовать.
Мы, вероятно, могли бы использовать margin-left: calc( 100vw / 2 - Xpx);
, где X - ширина .container
, но вместо этого я добавил положение relative
и переместил это скользить к средней ширине left: 50%
- это 50% родительского элемента (если вы выключите transform
, вы увидите, что слайд начинается точно в середине окна). transform: translateX(-50%)
установит слайд в нужном месте, потому что он работает на ширине дочернего элемента, а не на родительском.
Внимание: для некоторых вариантов масштабирования может появиться горизонтальная прокрутка, вы можете обернуть баннер в отдельный раздел с помощью overflow: hidden;
(но если бы вы могли это сделать, вы, вероятно, удалили бы .container
уже) или добавили overflow-x: hidden;
к телу.