代码如下 | 复制代码 |
<style> .container { border: 3px solid #000; width: 600px; background-color: #eee; margin-bottom:50px; } .floatedbox { float: left; border: 3px solid #bbb; width: 125px; height: 125px; background-color: #fff; margin-right: 1em; padding: 0 10px; } </style> </head> <body> <div class="container"> <div class="floatedbox"> <p> floated box </p> </div> <h3>Container 1</h3> <p> (<em>without</em> easy clearing) </p> </div> </body> </html> |
去网上查了一下,这就是著名的浮动问题。我们需要做的就是将浮动效果给清除。
咋个解决方法
网上有好多解决办法,但是普遍是在这三类中:
在浮动的div外层,增加含有clear:both样式定义的div元素
使用overflow:auto,但是这个传说中会引起一些很杯具的效果
使用after伪元素进行处理,同时对于IE使用hack
首先第二种,既然传说中会杯具,那么我肯定不用。而第一种,对于我这种有类似html洁癖的人也肯定不会使用,平白无故增加一个div标签,实在感觉有些划不来,还有些恶心。
所以我彩after伪元素来处理,具体处理后的代码如下:
代码如下 | 复制代码 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <div class="container"> |
问题得以解决。网上还有人说在div标签后面加上一个“点”感觉不爽,而且还要使用visibility来隐藏。所以建议使用如下代码替代:
代码如下 | 复制代码 |
.clearfix:after{content:"";display:block;height:0;clear:both;} |
这样我们的问题就解决了。