Конечно!
Познакомьтесь с вашим новым дружественным CSS-модулем, vw и vh !
Как минимум, ваш код изменится следующим образом:
.wide {
background:green;
height:200px;
// use calc to sort out the left margin to break out of the inner container
margin-left:calc((100vw - 800px) / -2);
// set width to full viewport width
width: 100vw;
}
Вот ваш CodePen, модифицированный для отображения результата: https://codepen.io/anon/pen/KreNGK
Несколько замечаний:
- Если у вас есть
padding
или border
в элементе .wide
Вы можете установить box-size: border-box;
, чтобы ширина все еще была правильной.( больше по размеру блока ) - Возможно, вы захотите настроить некоторые медиазапросы для сценариев, в которых область просмотра с меньше 800px
inner
element. - Выше
calc
можно было бы упростить до calc(-50vw + 400px);
, однако структура, которую я использовал, основана на идее использования переменных (например, с SCSS или LESS), так что это может закончиться calc((100vw - $inner-width) / -2);
и по-прежнему работает нормально ...