Dựa trên đề xuất ban đầu của bạn (đặt lề âm), tôi đã thử và đưa ra một phương pháp tương tự bằng cách sử dụng đơn vị tỷ lệ phần trăm cho chiều rộng trình duyệt động:
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;
}
Các lề âm sẽ cho phép nội dung chảy ra khỏi DIV gốc. Do đó, tôi đặt mục padding: 0 100%;
tiêu đẩy nội dung trở về ranh giới ban đầu của Chlid DIV.
Các lề âm cũng sẽ làm cho tổng chiều rộng của .child-div mở rộng ra khỏi chế độ xem của trình duyệt, dẫn đến cuộn ngang. Do đó, chúng ta cần cắt bớt chiều rộng đùn bằng cách áp dụng một overflow-x: hidden
DIV Grandparent (là cha mẹ của Div mẹ):
Đây là thư viện
Tôi đã thử dùng Nils Muffersson left: calc(-50vw + 50%)
; nó hoạt động hoàn toàn tốt trong Chrome & FF (chưa chắc chắn về IE) cho đến khi tôi phát hiện ra các trình duyệt Safari không hoạt động đúng. Hy vọng họ đã sửa nó sớm vì tôi thực sự thích phương pháp đơn giản này.
Điều này cũng có thể giải quyết vấn đề của bạn trong đó yếu tố DIV gốc phải là position:relative
Hai nhược điểm của phương pháp này là:
- Yêu cầu đánh dấu thêm (tức là một yếu tố ông bà (giống như phương pháp căn chỉnh bảng theo chiều dọc của bảng ol 'tốt phải không ...)
- Đường viền trái và phải của DIV trẻ em sẽ không bao giờ hiển thị, đơn giản vì chúng nằm ngoài chế độ xem của trình duyệt.
Vui lòng cho tôi biết nếu có bất kỳ vấn đề nào bạn tìm thấy với phương pháp này;). Hy vọng nó giúp.
position: relative
? Bạn cầnposition: relative
gì? Tôi đoán những gì tôi đang hỏi là: bạn đang cố gắng làm gì?