我有一个父div的4个div。为了让它们并排出现,我给了所有4个div一个float:left的样式。 div并排显示,但父div的高度不会增长到包含子div的高度。我错过了什么?并排div
并排div
回答
4个div后,您需要“取消”浮动样式。 这是通过创建p完成的,例如:<p style="clear: both"></p>
您的父div将自动获得正确的大小。
我认为你应该给父母div 100%的高度不固定,以便它包含子div的高度,如果它们增长的话。
在父div上设置overflow: hidden;
。
说明:浮动元素将它们从常规文档流中移除。因此,如果一个给定的元素只包含浮动元素,它将不会有任何高度(或者扩展宽度 - 除非它具有默认的块元素的隐式宽度)。
将overflow属性设置为hidden将告诉父元素尊重其子元素的宽度,但隐藏所有超出其宽度和高度的元素。
当然,另一种选择是在浮动的div后面添加一个元素在父级内,使用clear: both;
这使最后一个元素位于常规文档流内的所有浮动元素之后。由于它位于父项内部,父项的高度是浮动项目的高度,以及常规填充和已清除项目的高度。
这是浮点元素实现的一个怪癖原因,当您有一个只包含浮动子元素的父元素时,会发生这种情况。有两种方法可以解决它。一种是将父元素的overflow
属性设置为hidden
,有时称为溢出方法。另一个被称为clearfix method,并且涉及使用伪类的:after
。
clearfix方法的优点是允许特定位置的元素在父容器外面“挂起”,如果您需要它们,则会牺牲一些额外的CSS和标记。这是我喜欢的方法,因为我经常使用悬挂元素。
Millinet公司的回答会工作,或者你可以浮在父DIV这也将允许它扩展到包含其内容
我推荐clearfix方法为好。发生此问题是因为浮动元素将删除它通常包含的任何高度。
PositionIsEverything posts a complete explanation以及IE6的相应解决方案,因为:旧选择器之后不支持伪选择器。
如果你想的div是并排的一面,你可以尝试使用inline-block的:
<style>
.alldivs {
display: inline-block;
}
</style>
<div id="wrapper">
<div id="div1" class="alldivs"></div>
<div id="div2" class="alldivs"></div>
<div id="div3" class="alldivs"></div>
<div id="div4" class="alldivs"></div>
</div>
- 1. Div并非并排排列
- 2. Div并排
- 3. CSS并排div
- 4. Dynamic div并排
- 5. 菜单div并排到div
- 6. 水平并排div div
- 7. HTML并排div div容器
- 8. 并排排列2个div
- 9. 自动排列div并排
- 10. 排列多个div并排
- 11. 两个Div并非并排排列
- 12. Div的并排并居中
- 13. div并非并排显示
- 14. Div并排问题
- 15. 并排放置div
- 16. 覆盖父母造型并排div div
- 17. 并排对齐两个div
- 18. 中心引导div并排
- 19. 衬里3个div并排
- 20. 图像和Div - 并排
- 21. 并排放置3个div
- 22. Div溢出并排浮动?
- 23. 在线div不并排
- 24. 对齐2 div并排
- 25. div并排在容器中
- 26. 并排DIV不对齐
- 27. 把2周的div并排
- 28. 并排放置两个div
- 29. 两个流体div并排
- 30. 作出的div并排
显然你的意思'明确:both' – 2010-01-19 18:15:51
这不是大多数Web推荐的解决方案开发人员,因为它需要额外的空白标记来破坏文档。 – zombat 2010-01-19 18:41:15
同意。这是垃圾。请参阅[这里](http://nicolas.google.com/micro-clearfix-hack/)了解更好的方法。 – 2012-12-04 12:19:24