啊,崩溃问题。这里有一篇关于花车的优秀文章http://css-tricks.com/all-about-floats/
在你的情况下,我会添加
overflow: auto
到#one
相关信息引用如下:
清除浮动的技术
如果您处于始终知道后续元素将是什么的情况下,则可以应用明确的:两者;重视该元素并开展您的业务。这是理想的,因为它不需要花哨的技巧,也不需要额外的元素,使其具有完美的语义。当然,事情通常不会这样,我们需要在我们的工具箱中拥有更多的浮动清除工具。
Empty div 方法,顾名思义,就是一个空的 div。<div style="clear: both;"></div>
. 有时你会看到使用了一个<br />
元素或其他一些随机元素,但 div 是最常见的,因为它没有浏览器默认样式,没有任何特殊功能,并且不太可能使用 CSS 进行通用样式。这种方法被语义纯粹主义者鄙视,因为它的存在对页面根本没有上下文意义,纯粹是为了呈现。当然,从最严格的意义上讲,他们是对的,但它可以正确地完成工作并且不会伤害任何人。
溢出方法依赖于在父元素上设置溢出 CSS 属性。如果此属性在父元素上设置为 auto 或 hidden,则父元素将展开以包含浮动,有效地为后续元素清除它。这种方法可以是精美的语义,因为它可能不需要额外的元素。但是,如果您发现自己添加一个新的 div 只是为了应用它,那么它与空 div 方法一样没有语义并且适应性较差。另请记住,溢出属性并非专门用于清除浮点数。注意不要隐藏内容或触发不需要的滚动条。
Easy Clearing Method使用巧妙的 CSS 伪选择器(:after)
来清除浮动。与其在父级上设置溢出,不如向其应用一个附加类,如“clearfix”。然后应用这个 CSS:
.clearfix:after {
content: ".";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
这将在清除浮动的父元素之后应用一小部分内容,从视图中隐藏。这还不是全部,因为需要使用额外的代码来适应旧浏览器。