W oparciu o twoją sugestię oryginalną sugestię (ustawienie ujemnych marginesów), próbowałem i opracowałem podobną metodę przy użyciu jednostek procentowych dla dynamicznej szerokości przeglądarki:
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;
}
Ujemne marginesy pozwolą na wypływ zawartości z Parent DIV. Dlatego ustawiłempadding: 0 100%;
aby przesuwać zawartość z powrotem do pierwotnych granic Chlid DIV.
Ujemne marginesy spowodują również, że całkowita szerokość .child-div rozszerzy się z okienka przeglądarki, co spowoduje przewijanie w poziomie. Dlatego musimy przyciąć szerokość wytłaczania poprzez zastosowanie overflow-x: hidden
DIV do Dziadka (który jest rodzicem Div Dywizji):
Oto JSfiddle
Próbowałem Nils Kaspersson left: calc(-50vw + 50%)
; działało idealnie w Chrome i FF (jeszcze nie jestem pewien co do IE), dopóki nie dowiedziałem się, że przeglądarki Safari nie robią tego poprawnie. Mam nadzieję, że naprawili to wkrótce, jak mi się podoba ta prosta metoda.
Może to również rozwiązać problem, w którym musi znajdować się element Parent DIV position:relative
Dwie wady tej metody obejścia:
- Wymagaj dodatkowego znacznika (tj. Elementu dziadka (tak jak w przypadku dobrej, pionowej metody wyrównywania w pionie tabeli, prawda?)
- Lewa i prawa krawędź Child DIV nigdy się nie pokaże, po prostu dlatego, że znajdują się poza oknem przeglądarki.
Daj mi znać, jeśli znajdziesz jakiś problem z tą metodą;). Mam nadzieję, że to pomoże.
position: relative
? Co jest potrzebneposition: relative
do? Chyba pytam: co próbujesz zrobić?