Orijinal önerinize (negatif kenar boşlukları ayarlama) dayanarak, dinamik tarayıcı genişliği için yüzde birimleri kullanarak benzer bir yöntem geliştirdim:
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;
}
Negatif kenar boşlukları, içeriğin Ana DIV'den dışarı akmasına izin verecektir. Bu nedenle padding: 0 100%;
, içeriği Chlid DIV'nin orijinal sınırlarına geri itmek için ayarladım .
Negatif kenar boşlukları, .child-div öğesinin toplam genişliğini tarayıcının görünüm penceresinden genişleterek yatay bir kaydırmaya neden olur. Bu nedenle overflow-x: hidden
, Büyükbaba DIV'ye (Ana Divanın ebeveyni) uygulayarak ekstrüzyon genişliğini kırpmamız gerekir :
İşte JSfiddle
Nils Kaspersson'u denedim left: calc(-50vw + 50%)
; Safari tarayıcılarının düzgün bir şekilde yapmadığını öğrenene kadar Chrome & FF'de (henüz IE hakkında emin değilim) mükemmel bir şekilde çalıştı. Umarım bu basit yöntemi sevdiğim anda bunu düzelttiler.
Bu, Üst DIV öğesinin olması gereken sorununuzu da çözebilir position:relative
Bu geçici çözüm yönteminin 2 dezavantajı:
- Ek işaretleme gerektirir (yani bir büyükbaba veya büyükanne öğesi (tıpkı iyi ol 'masa dikey hizalama yöntemi gibi değil mi?)
- Child DIV'nin sol ve sağ sınırı, yalnızca tarayıcının görünüm penceresinin dışında oldukları için hiçbir zaman gösterilmez.
Bu yöntemle bulduğunuz herhangi bir sorun varsa lütfen bize bildirin;). Umarım yardımcı olur.
position: relative
? Neposition: relative
için ihtiyacınız var ? Sanırım ne soruyorum: ne yapmaya çalışıyorsun?