Những gì @BoltClock đề cập là khá vững chắc. Và ở đây tôi chỉ muốn thêm một vài giải pháp cho vấn đề này. kiểm tra lề w3c_collapsing này . Các phần màu xanh là suy nghĩ tiềm năng làm thế nào vấn đề này có thể được giải quyết.
Giải pháp 1
Các lề giữa một hộp nổi và bất kỳ hộp nào khác không bị sụp đổ (thậm chí không giữa một phao nổi và các con trong dòng chảy của nó).
điều đó có nghĩa là tôi có thể thêm float:left
vào #outer
hoặc #inner
demo1 .
cũng lưu ý rằng float
sẽ làm mất hiệu lực auto
trong lề.
Giải pháp 2
Các lề của các phần tử thiết lập bối cảnh định dạng khối mới (chẳng hạn như phao và các phần tử có 'tràn' khác với 'hiển thị') không bị sụp đổ với các phần tử con của chúng.
ngoài ra visible
, hãy đưa overflow: hidden
vào #outer
. Và cách này có vẻ khá đơn giản và phong nha. Tôi thích nó.
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
overflow: hidden;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
Giải pháp 3
Lợi nhuận của các hộp được định vị tuyệt đối không bị sụp đổ (ngay cả với những đứa trẻ trong dòng chảy của chúng).
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: absolute;
}
#inner{
background: #FFCC33;
height: 50px;
margin: 50px;
}
hoặc là
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: relative;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
position: absolute;
}
hai phương pháp này sẽ phá vỡ dòng chảy bình thường của div
Giải pháp 4
Lợi nhuận của các hộp khối nội tuyến không sụp đổ (ngay cả với những đứa trẻ trong dòng chảy của chúng).
giống như @enderskill
Giải pháp 5
Lề dưới của phần tử cấp khối trong dòng chảy luôn sụp đổ với lề trên của anh chị em cấp khối trong dòng tiếp theo, trừ khi anh chị em đó có giải phóng mặt bằng.
Điều này không có nhiều việc phải làm với câu hỏi vì đó là biên độ sụp đổ giữa anh chị em. nó thường có nghĩa là nếu hộp trên cùng có margin-bottom: 30px
và hộp anh chị em có margin-top: 10px
. Tổng số tiền lãi giữa chúng là 30px
thay vì 40px
.
Giải pháp 6
Lề trên cùng của phần tử khối trong luồng bị sập với lề trên cùng của khối cấp dòng đầu tiên của nó nếu phần tử không có đường viền trên cùng, không có phần đệm trên cùng và đứa trẻ không có khoảng trống.
Điều này rất thú vị và tôi chỉ có thể thêm một đường viền trên cùng
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
border-top: 1px solid red;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
Và cũng <div>
là cấp độ khối theo mặc định, vì vậy bạn không phải khai báo nó theo mục đích. Xin lỗi vì không thể đăng nhiều hơn 2 liên kết và hình ảnh do danh tiếng người mới của tôi. Ít nhất bạn biết vấn đề đến từ đâu khi bạn thấy điều gì đó tương tự.