Giải pháp hiển nhiên nhất là chỉ đóng hộp chứa ... có div chiều rộng đầy đủ của bạn rồi mở một vùng chứa mới. Tiêu đề 'vùng chứa' chỉ là một lớp ... không phải là yêu cầu tuyệt đối mà nó giữ tất cả mọi thứ cùng một lúc.
Trong trường hợp này, bạn áp dụng màu nền cho div chiều rộng đầy đủ và bạn không cần để áp dụng màu cho div nội bộ, bị hạn chế.
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
.fullwidth {
background: orange;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
/* background: orange; */
min-height: 50px;
}
footer {
height: 50px;
background: #bada55;
}
<div class="container">
<header></header>
</div>
<div class="fullwidth">
<div class="container">
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
</div>
</div>
<div class="container">
<footer></footer>
</div>
Tuy nhiên, đối với một số họ thích một đơn tất cả bao gồm thùng chứa vì vậy nếu tất cả các bạn đang theo đuổi là một nền bạn có thể sử dụng một pseudo-yếu tố như sau:
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
overflow-x: hidden;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
height: 100px;
position: relative;
}
.mydiv:after {
content: "";
position: absolute;
height: 100%;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 100vw;
background: orange;
z-index: -1;
}
footer {
height: 50px;
background: #bada55;
}
<div class="container">
<header></header>
<div class="mydiv">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
<footer></footer>
</div>
Hỗ trợ cho vw
là IE9 + - Xem http://caniuse.com/#feat=viewport-units
Có những trường hợp nội dung thực tế được yêu cầu trong div rộng 100% và không thể mở/đóng theo ý muốn (có thể trang bị thêm thanh trượt).
Trong những trường hợp, nơi chiều cao của div mới được biết đến kỹ thuật tương tự có thể được sử dụng để định vị nó như là 100% khung nhìn rộng:
* {
margin: 0;
padding: 0;
}
body {
overflow-x: hidden;
}
.container {
max-width: 80%;
border: 1px solid red;
margin: 0 auto;
}
header {
height: 50px;
background: #663399;
}
.mydiv {
height: 100px;
position: relative;
}
.myslider {
position: absolute;
height: 100%;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 100vw;
background: orange;
}
footer {
height: 50px;
background: #bada55;
}
<div class="container">
<header></header>
<div class="mydiv">
<div class="myslider">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum illum veniam in delectus corrupti autem magnam. Tenetur ducimus provident nisi aut esse aliquid accusamus quas.</p>
</div>
</div>
<footer></footer>
</div>
JSfiddle Demo
Lưu ý: có trường hợp trong đó 100vw
có thể gây overflo w và một thanh cuộn ngang có thể xuất hiện. overflow-x:hidden
trên <body>
có thể tham dự vào điều đó..nó không phải là một vấn đề bởi vì mọi thứ khác vẫn còn bên trong container.
Nguồn
2015-02-17 16:40:59
Không có ý tưởng tại sao điều này downvoted - một cách hoàn hảo câu hỏi hợp lý. – dotnetnoob