好吧,你可以:
http://jsfiddle.net/qzbNr/6/
CSS
div.floats {
padding: 10px;
background-color: #eee;
margin: 10px 0;
}
div.floats > div {
float: left;
width: 20px;
height: 20px;
background-color: #333;
}
div.floats > div + div {
margin-left: 10px;
}
div.overflow-hidden {
overflow: hidden;
}
div.box-sizing {
width: 100%;
box-sizing: border-box;
}
div.known-width {
/* 200px - 2 * 10px of padding */
width: 180px;
}
div.calc {
width: calc(100% - 20px);
}
div.after-pseudo:after {
content: "";
display: block;
clear: both;
}
div.clear {
float: none !important;
clear: both !important;
width: 0 !important;
height: 0 !important;
margin: 0 !important;
}
HTML
<div class="floats overflow-hidden box-sizing">
<div></div>
<div></div>
<div></div>
</div>
<div class="floats overflow-hidden known-width">
<div></div>
<div></div>
<div></div>
</div>
<div class="floats overflow-hidden calc">
<div></div>
<div></div>
<div></div>
</div>
<div class="floats after-pseudo">
<div></div>
<div></div>
<div></div>
</div>
<div class="floats extra-markup">
<div></div>
<div></div>
<div></div>
<div class="clear"></div>
</div>
溢出方法很麻烦,诀窍是溢出隐藏和定义宽度,你需要注意盒子模型的大小,如果你想要像工具提示这样的东西,你会遇到麻烦,但除此之外很经典,很好用。
伪方法是最好的恕我直言,事实上我的 CSS 中总是有一个 .clear:after 。
额外标记方法是最糟糕的,因为您需要添加没有任何意义的元素并注意其他样式应用 width !important 左右。