Giải pháp cập nhật (tháng 10 năm 2014): sẵn sàng cho bố cục chất lỏng
Giới thiệu:
Giải pháp này thậm chí còn đơn giản hơn giải pháp được cung cấp bởi Leigh
. Nó thực sự dựa trên nó.
Ở đây, bạn có thể nhận thấy rằng phần tử giữa (trong trường hợp của chúng tôi là với "content__middle"
lớp) không có bất kỳ thuộc tính chiều nào được chỉ định - không có chiều rộng, không có phần đệm, cũng không có thuộc tính liên quan đến lề - mà chỉ có một overflow: auto;
(xem chú thích 1).
Ưu điểm lớn là bây giờ bạn có thể chỉ định a max-width
và a min-width
cho các phần tử trái và phải của mình . Điều này thật tuyệt vời cho bố cục linh hoạt .. do đó bố cục đáp ứng :-)
lưu ý 1: so với câu trả lời của Leigh, nơi bạn cần thêm margin-left
& margin-right
thuộc tính vào "content__middle"
lớp.
Mã có bố cục không linh hoạt:
Ở đây, các phần tử bên trái và bên phải (với các lớp "content__left"
và "content__right"
) có chiều rộng cố định (tính bằng pixel): do đó được gọi là bố cục không linh hoạt.
Demo trực tiếp trên http://jsbin.com/qukocefudusu/1/edit?html,css,output
<style>
.content {
width: 100%;
}
.content__left {
width: 100px;
float: left;
background-color: #fcc;
}
.content__middle {
background-color: #cfc;
overflow: auto;
}
.content__right {
width: 100px;
float: right;
background-color: #ccf;
}
</style>
<div class="content">
<div class="content__left">
left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>
</div>
<div class="content__right">
right div<br/>right div<br/>right div<br/>right div<br/>
</div>
<div class="content__middle">
middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller
</div>
</div>
Mã với bố cục linh hoạt:
Ở đây, các phần tử bên trái và bên phải (với các lớp "content__left"
và "content__right"
) có chiều rộng thay đổi (tính bằng phần trăm) nhưng cũng có chiều rộng tối thiểu và tối đa: do đó được gọi là bố cục linh hoạt.
Demo trực tiếp trong một bố cục linh hoạt với các max-width
thuộc tính http://jsbin.com/runahoremuwu/1/edit?html,css,output
<style>
.content {
width: 100%;
}
.content__left {
width: 20%;
max-width: 170px;
min-width: 40px;
float: left;
background-color: #fcc;
}
.content__middle {
background-color: #cfc;
overflow: auto;
}
.content__right {
width: 20%;
max-width: 250px;
min-width: 80px;
float: right;
background-color: #ccf;
}
</style>
<div class="content">
<div class="content__left">
max-width of 170px & min-width of 40px<br />left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>
</div>
<div class="content__right">
max-width of 250px & min-width of 80px<br />right div<br/>right div<br/>right div<br/>right div<br/>
</div>
<div class="content__middle">
middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller
</div>
</div>
Hỗ trợ trình duyệt
Đã kiểm tra trên BrowserStack.com trên các trình duyệt web sau:
- IE7 đến IE11
- Ff 20, Ff 28
- Safari 4.0 (windows XP), Safari 5.1 (windows XP)
- Chrome 20, Chrome 25, Chrome 30, Chrome 33,
- Opera 20