我遇到了一个问题,本以为很简单的事情却让我有点困惑(也许我只是过于复杂化了)。我希望有一个
包含多个子
;这些子元素应根据数量自动扩展或收缩(我正在使用 CMS 系统,允许用户添加或删除项目)。
我的问题在于如何令
遵守最小和最大宽度的声明。我有一个猜测,可能与它们的float:left有关,但我尝试了其他一些变体也没有成功。
我的主要目标是让这些列填满它们的空间,在一行上最多有4个列。
编辑:我需要将这些列设定为最小宽度和最大宽度。因此,如果有3个子
,它们应该比有4个子
时更宽。
以下是我的代码示例:http://codepen.io/joe/full/IJvGp
HTML
<div class="sub cf">
<div class="row">
<div class="col">
Column 1
</div>
<div class="col">
Column 2
</div>
<div class="col">
Column 3
</div>
<div class="col">
Column 4
</div>
</div>
</div>
CSS
.sub {
width: 670px;
background: #fff;
border: 10px solid #414042;
}
.sub .row {
padding: 0;
float: left;
width: 100%;
}
.sub .row .col {
min-width: 166px;
max-width: 222px;
width: 100%;
float: left;
border-right: 1px solid #D0D2D3;
margin: 0;
padding: 0;
}
.cf::before, .cf::after {
content: "";
display: table;
}
.cf::after {
clear: both;
}
display: table;
(参见使用CSS显示:表格布局,但在IE8之前不受支持)或新的 CSS3 弹性盒子(然而,它目前的浏览器支持甚至更少 :-p 当它可用时,它将是很棒的...)。 - thirdenderdisplay: table
,无论是否使用table-layout: fixed
,对于两种不同的算法都可以得到+1。其中一种基于内容的(相对)宽度,另一种基于您指定的宽度。 - FelipeAls