【发布时间】:2013-01-03 02:23:19
【问题描述】:
我有一个“时刻”,我被一个我认为应该很容易的问题难住了(可能是,我确定我只是过于复杂了)。
我希望有一个div 和多个孩子div's;孩子们应该根据数量自动扩展或收缩(我正在处理的网站位于允许用户添加或删除项目的 CMS 中)。
我的问题是让div's 尊重最小和最大宽度声明。我有一种预感,这可能与他们成为 float:left 有关,但我尝试了其他一些变体,但都没有运气。
我的主要目标是让这些列在一个“行”上填充它们的空间,最多 4 列。
编辑:我需要将这些列设置为最小宽度和最大宽度。所以如果有 3 个子 div's,它们应该都比有 4 个子 div's 宽。
这是我的代码示例: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;
}
【问题讨论】:
-
你给了它们每个 100% 的宽度。如果你想把其中的 4 个放在一行中,你必须给每个 25% 的宽度。
-
这在 CSS 中并不容易。可能最直接的选项是
display: table;(请参阅Use CSS display:table for Layout,IE 直到 IE8 才支持),或者新的CSS3 Flexible Boxes(但是,目前它对浏览器的支持更少:-p 当它可用时,这将是太棒了……)。 -
+1 用于在
display: table上进行尝试,有或没有table-layout: fixed两种不同的算法。一个基于内容的(相对)宽度,另一个基于您指定的宽度。
标签: html fluid-layout css