我有一个服务器端组件,使用DIV
生成一个没有固定宽度的流体布局“工具栏”,在其中生成许多A
。
然后我需要自定义该布局,以使所有A
标签自动适合父宽度。但是孩子的数量是可变的,父母的宽度是未知的(它自动适合窗口)。
我用这个小提琴进行了一些测试:http://jsfiddle.net/ErickPetru/6nSEj/1/
但是我找不到让它变得动态的方法(取消注释最后一个A
标签以查看它是如何工作的,哈哈)。
我无法更改服务器端源以使用固定宽度格式化HTML。如果有任何办法,我真的想用CSS解决它,即使用JavaScript我也可以实现这个结果。
如何让所有孩子自己适应父母的宽度,与孩子的数量无关?
答案 0 :(得分:13)
您可以使用display: table-cell
:
请参阅: http://jsfiddle.net/6nSEj/12/ (or with 5 children)
这在IE7中不起作用,因为该浏览器根本不支持display: table
和朋友。
div.parent {
..
width: 100%;
display: table;
table-layout: fixed;
}
div.parent a {
..
display: table-cell;
}
答案 1 :(得分:4)
这已经是一个非常古老的问题了。虽然当时给出的答案很好,但现在Flexible Box Layout提供了相同的结果,更简单,在所有现代浏览器中good support。我强烈推荐它!
/* Important parts */
.parent {
display: flex;
}
.parent a {
flex: 1;
}
/* Decoration */
.parent {
padding: 8px;
border: 1px solid #ccc;
background: #ededed;
}
.parent a {
line-height: 26px;
text-align: center;
text-decoration: none;
border: 1px solid #ccc;
background: #dbdbdb;
color: #111;
}

<div class="parent">
<a href="#">Some</a>
<a href="#">Other</a>
<a href="#">Any</a>
</div>
<br>
<div class="parent">
<a href="#">Some</a>
<a href="#">Other</a>
<a href="#">Any</a>
<a href="#">One More</a>
<a href="#">Last</a>
</div>
&#13;
答案 2 :(得分:0)
现在很多人都使用jQuery作为解决这个问题的方法。你只需要一条线。这是你的小提琴。
$("div.parent a").css("width", (($("div.parent").width() / $("div.parent a").length ) -2) + "px");