Tại sao div cha mẹ có chiều cao bằng 0 khi nó có con


131

Tôi có những điều sau đây trong CSS của tôi. Tất cả các lề / paddings / viền được thiết lập lại toàn cầu về 0.

#wrapper{width: 75%; min-width: 800px;}
.content{text-align: justify; float: right; width: 90%;}
.lbar{text-align: justify; float: left; width: 10%;}

Bây giờ khi tôi viết HTML của mình là

<div id="wrapper">
    <div class="content">
        some text here
    </div>
    <div class="lbar">
        some text here
    </div>
</div>

trang hiển thị chính xác. Tuy nhiên, khi tôi kiểm tra các yếu tố, div#wrapperđược hiển thị là 0pxcao. Tôi đã mong nó sẽ mở rộng cho đến cuối div.contentdiv.lbar... Tại sao điều này xảy ra?

Một lần nữa, trang hiển thị tốt. Hành vi này chỉ làm tôi bối rối.


4
Điều này có thể hữu ích cho bạn CSS Floats 101 , từ A List Apart .
David nói phục hồi Monica

Câu trả lời:


250

Nội dung nổi không ảnh hưởng đến chiều cao của thùng chứa. Phần tử không chứa nội dung không nổi (vì vậy không có gì ngăn chiều cao của container là 0, như thể nó trống).

Cài đặt overflow: hiddentrên container sẽ tránh điều đó bằng cách thiết lập bối cảnh định dạng khối mới . Xem các phương pháp để chứa float cho các kỹ thuật khác và chứa float để được giải thích về lý do CSS được thiết kế theo cách này.


Đây là một cách tiếp cận khác để tạo các thùng chứa chứa các float được giải quyết trong CSS mà không cần phải thêm các phần tử vào trang.
Phil

56

Thông thường, floats không được tính trong bố trí của cha mẹ họ.

Để ngăn chặn điều đó, thêm overflow: hiddenvào cha mẹ.


16
Cảm ơn, điều này hoạt động, nhưng tôi không hiểu tại sao ... tràn: ẩn được cho là ẩn nội dung tràn, không phóng to phần tử để chứa nó.
ripper234


6

Tôi không chắc đây là một cách đúng đắn nhưng tôi đã giải quyết nó bằng cách thêm display: inline-block;vào div trình bao bọc.

#wrapper{
    display: inline-block;
    /*border: 1px black solid;*/
    width: 75%;
    min-width: 800px;
}

.content{
    text-align: justify; 
    float: right; 
    width: 90%;
}

.lbar{
    text-align: justify; 
    float: left; 
    width: 10%;
}

1
Đây là giải pháp chính xác mà tôi đang tìm kiếm. Overflow: ẩn khiến bóng hộp biến mất, tự nhiên.
Kitiara
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.