В общем все вроде просто. Есть родитель, его ширина 800px. У него есть родитель, его ширина 150% ширины родителя так что он выходит за его пределы. Все работает нормально до тех пор пока не сузить окзно браузера. Из-за margin-left: 25% блок обрезается слева правильно выходя за пределы окна, но справа у него остается несимметричный отрезок. Так есть это можно исправить добавляя overflow:hidden к родителю с шириной 100%, но это не подойдет из-за проблемы если сузить еще сильнее то нет скрола по основному контенту так же.
Я создал пример на JSFiddle потому-то там можно поиграть с размером вьюпорта. Попробуйте его увеличить и сузить, потом попробуйте добавить overflow:hidden к .body.
https://jsfiddle.net/m6op1dwt/11/
Я полагаю все-равно может быть что-то непонятно, я отвечу на все вопросы. Спасибо за внимание.
Желательно не допускать ситуаций, когда дочерний элемент больше родителя. Но ситуации бывают разные. Вот способ с абсолютным позиционированием:
*{
box-sizing:border-box;
}
body{
margin:0;
}
.container{
padding-top:50px;
max-width:800px;
margin:auto;
position:relative;
}
.progress{
border:1px solid;
width:150%;
max-width:100vw; /*Ограничиваем ширину прогресс-бара шириной экрана*/
height:30px;
background-color:#ddd;
position:absolute;
top:10px;
left:50%; /*смещаем прогресс-бар влево на 50% ширины родителя*/
transform:translateX(-50%); /*смещаем прогресс-бар вправо на 50% своей ширины, тем самым центрируя его относительно родителя*/
}
.progress__bar{
width:50%;
height:100%;
background-color:#cda;
}
<div class="container">
<div class="progress">
<div class="progress__bar"></div>
</div>
<p>Многие думают, что Lorem Ipsum - взятый с потолка псевдо-латинский набор слов, но это не совсем так. Его корни уходят в один фрагмент классической латыни 45 года н.э., то есть более двух тысячелетий назад. Ричард МакКлинток, профессор латыни из колледжа Hampden-Sydney, штат Вирджиния, взял одно из самых странных слов в Lorem Ipsum, "consectetur", и занялся его поисками в классической латинской литературе.</p>
</div>
Вариант с изменением разметки(более корректный, на мой взгляд)
*{
box-sizing:border-box;
}
.progress{
max-width:1600px;
margin:0 auto 10px;
height:30px;
background-color:#ddd;
border:1px solid;
}
.progress__bar{
height:100%;
width:50%;
background-color:#cda;
}
.container{
max-width:800px;
margin:auto;
}
<div class="progress">
<div class="progress__bar"></div>
</div>
<div class="container">Многие думают, что Lorem Ipsum - взятый с потолка псевдо-латинский набор слов, но это не совсем так. Его корни уходят в один фрагмент классической латыни 45 года н.э., то есть более двух тысячелетий назад. Ричард МакКлинток, профессор латыни из колледжа Hampden-Sydney, штат Вирджиния, взял одно из самых странных слов в Lorem Ipsum, "consectetur", и занялся его поисками в классической латинской литературе.</div>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей