Ваш контейнер имеет размер, равный W
(600px
в вашем примере), тогда наш полный контейнер является полноэкранным, поэтому 100vw
, поэтому поле с обеих сторон равно (100vw - W) / 2
, так что вы можете просто использовать этополе с внутренними элементами.
Небольшой недостаток заключается в том, что 100vw
включает в себя также ширину полосы прокрутки, поэтому при наличии полосы прокрутки вычисление будет незначительным:
body {
background: #666;
margin: 0;
}
.container {
height: 100px;
background: #888;
max-width: 600px;
margin: 0 auto;
}
.full {
display: flex;
background: orange;
height: 45px;
margin-bottom: 4px;
}
.left {
width: 50%;
background: #16CC4A;
}
.left .content {
margin-left: calc((100vw - 600px)/2);
border: 1px solid red;
}
.right .content {
margin-right: calc((100vw - 600px)/2);
border: 1px solid red;
text-align: right;
}
.right {
background: #D98813;
width: 50%;
}
.uneven .left {
width: 65.3%;
}
.uneven .right {
width: 34.7%;
}
@media all and (max-width:600px) {
.left .content,
.right .content {
margin: 0;
}
}
<body>
<div class="container"></div>
<div class="full even">
<div class="left">
<div class="content">
Edge
</div>
</div>
<div class="right">
<div class="content">
Edge
</div>
</div>
</div>
<div class="full uneven">
<div class="left">
<div class="content">
Edge
</div>
</div>
<div class="right">
<div class="content">
Edge
</div>
</div>
</div>
</body>