На основі оригінальної пропозиції вашої пропозиції (встановлення від'ємних меж) я спробував і придумав аналогічний метод, використовуючи відсоткові одиниці для динамічної ширини браузера:
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
до Діда Дідуся (який є батьком Батька Діви):
Ось JSfiddle
Я намагався пробувати Нільса Касперсона left: calc(-50vw + 50%)
; він працював ідеально в Chrome & FF (ще не впевнений у IE), поки я не з'ясував, що браузери Safari не роблять це належним чином. Сподіваюся, вони скоро це виправили, коли мені справді подобається цей простий метод.
Це також може вирішити вашу проблему там, де має бути батьківський елемент DIV position:relative
2 недоліки цього способу вирішення:
- Потрібна додаткова розмітка (тобто елемент бабусі і дідуся (як і метод хорошого вертикального вирівнювання таблиці ol 'чи не так ...)
- Ліва і права межа дочірнього DIV ніколи не відображатиметься, просто тому, що вони знаходяться поза вікном перегляду браузера.
Будь ласка, дайте мені знати, чи є якісь проблеми з цим методом;). Сподіваюся, це допомагає.
position: relative
? Що вам потрібноposition: relative
? Я здогадуюсь, що я прошу: це що ти намагаєшся зробити?