Исходя из вашего первоначального предложения (установка отрицательных полей), я попробовал и придумал аналогичный метод, использующий процентные единицы для динамической ширины браузера:
HTML
<div class="grandparent">
<div class="parent">
<div class="child">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore neque repellat ipsum natus magni soluta explicabo architecto, molestias laboriosam rerum. Tempore eos labore temporibus alias necessitatibus illum enim, est harum perspiciatis, sit, totam earum corrupti placeat architecto aut minus dignissimos mollitia asperiores sint ea. Libero hic laudantium, ipsam nostrum earum distinctio. Cum expedita, ratione, accusamus dicta similique distinctio est dolore assumenda soluta dolorem quisquam ex possimus aliquid provident quo? Enim tempora quo cupiditate eveniet aperiam.</p>
</div>
</div>
</div>
CSS:
.child-div{
margin: 0 -100%;
padding: 0 -100%;
}
.parent {
width: 60%;
background-color: red;
margin: 0 auto;
padding: 50px;
position:relative;
}
.grandparent {
overflow-x:hidden;
background-color: blue;
width: 100%;
position:relative;
}
Отрицательные поля позволят контенту вытекать из родительского DIV. Поэтому я установил, padding: 0 100%;
чтобы содержимое возвращалось к исходным границам Chlid DIV.
Отрицательные поля также увеличивают общую ширину .child-div из области просмотра браузера, что приводит к горизонтальной прокрутке. Следовательно, нам нужно обрезать ширину выдавливания, применяяoverflow-x: hidden
к DIV деду (который является родителем родительского Div):
Вот JSfiddle
Я пробовал Нильса Касперссона left: calc(-50vw + 50%)
; он прекрасно работал в Chrome и FF (пока не уверен насчет IE), пока я не обнаружил, что браузеры Safari не делают это должным образом. Надеюсь, они скоро это исправят, так как мне действительно нравится этот простой метод.
Это также может решить вашу проблему, где родительский элемент DIV должен быть position:relative
2 недостатка этого метода обхода:
- Требуется дополнительная разметка (то есть элемент grandparent (точно так же, как хороший метод выравнивания таблицы по вертикали, не так ли ...)
- Левая и правая границы Child DIV никогда не будут отображаться просто потому, что они находятся вне области просмотра браузера.
Пожалуйста, дайте мне знать, если вы обнаружите какие-либо проблемы с этим методом;). Надеюсь, поможет.
position: relative
? Для чего тебе нужноposition: relative
? Я думаю, что я спрашиваю: что вы пытаетесь сделать?