如何让孩子只用CSS自动适应父母的宽度?

时间:2011-05-02 14:02:18

标签: html css css-float width fluid-layout

我有一个服务器端组件,使用DIV生成一个没有固定宽度的流体布局“工具栏”,在其中生成许多A

然后我需要自定义该布局,以使所有A标签自动适合父宽度。但是孩子的数量是可变的,父母的宽度是未知的(它自动适合窗口)。

我用这个小提琴进行了一些测试:http://jsfiddle.net/ErickPetru/6nSEj/1/

但是我找不到让它变得动态的方法(取消注释最后一个A标签以查看它是如何工作的,哈哈)。

我无法更改服务器端源以使用固定宽度格式化HTML。如果有任何办法,我真的想用CSS解决它,即使用JavaScript我也可以实现这个结果。

如何让所有孩子自己适应父母的宽度,与孩子的数量无关?

3 个答案:

答案 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;
&#13;
&#13;

答案 2 :(得分:0)

现在很多人都使用jQuery作为解决这个问题的方法。你只需要一条线。这是你的小提琴。

$("div.parent a").css("width", (($("div.parent").width() / $("div.parent a").length ) -2) + "px");