ตามคำแนะนำดั้งเดิมของคุณ (การตั้งค่าระยะขอบติดลบ) ฉันได้ลองใช้วิธีที่คล้ายกันโดยใช้หน่วยเปอร์เซ็นต์สำหรับความกว้างของเบราว์เซอร์แบบไดนามิก:
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;
}
ระยะขอบติดลบจะทำให้เนื้อหาไหลออกจาก Parent DIV ดังนั้นฉันตั้งค่าpadding: 0 100%;
ให้ส่งเนื้อหากลับไปที่ขอบเขตดั้งเดิมของ Chlid DIV
ระยะขอบลบจะทำให้ความกว้างทั้งหมดของ. child-div ขยายออกจากวิวพอร์ตของเบราว์เซอร์ทำให้เลื่อนในแนวนอน ดังนั้นเราจำเป็นต้องคลิปความกว้างของการอัดรีดโดยการใช้overflow-x: hidden
กับ Grandparent DIV (ซึ่งเป็นพาเรนต์ของ parent Div):
นี่คือJSfiddle
ฉันได้ลองของ Nils Kaspersson left: calc(-50vw + 50%)
แล้ว มันทำงานได้ดีอย่างสมบูรณ์ใน Chrome & FF (ยังไม่แน่ใจเกี่ยวกับ IE) จนกระทั่งฉันพบเบราว์เซอร์ Safari ไม่ทำงานอย่างถูกต้อง หวังว่าพวกเขาจะแก้ไขปัญหานี้ทันทีที่ฉันชอบวิธีการง่ายๆนี้
สิ่งนี้อาจแก้ไขปัญหาของคุณได้ที่องค์ประกอบ DIV หลัก position:relative
2 ข้อเสียของวิธีแก้ปัญหานี้คือ:
- ต้องการมาร์กอัปพิเศษ (เช่นองค์ประกอบที่เป็นปู่ย่าตายาย (เช่นเดียวกับวิธีการจัดตำแหน่งแนวดิ่งที่ดีของตารางไม่ใช่ใช่ ... )
- ขอบด้านซ้ายและขวาของ Child DIV จะไม่แสดงเพียงเพราะอยู่นอกวิวพอร์ตของเบราว์เซอร์
โปรดแจ้งให้เราทราบหากคุณพบปัญหาในการใช้วิธีนี้;) หวังว่ามันจะช่วย
position: relative
? คุณต้องการposition: relative
อะไร ฉันเดาว่าฉันถามอะไรอยู่: คุณพยายามทำอะไร