CSS使最后一个子项动态获取父项中剩余的宽度

时间:2015-01-14 09:07:10

标签: html css width

在我的情况下,从服务器端返回子号。如果少于6个孩子,我需要添加虚拟孩子,这将占用父母的左侧。

例如:

有两个孩子的1个情况 enter image description here 2个孩子的情况 enter image description here

fiddle

<div id="container">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
    <div class="big-child"></div>
</div>
#container{
    width: 100%;
    height: 200px;
    background-color: gray;
}

#container > div {
    float: left;
    background-color: black;
    width: 100px;
    height: 100px;
    margin-right: 20px;
}

.big-child {
    width: 59%!important;
    margin-right: 0px!important;
}

我怎样才能通过CSS实现这一目标,并使用javascript动态改变子宽度?

更新

找到好的website,根据你的盒子需要生成CSS代码。

2 个答案:

答案 0 :(得分:1)

在现代浏览器上,您可以使用flexbox

http://codepen.io/anon/pen/yyMgQL

CSS:

#container {
    display: -ms-flexbox; /* IE 10 syntax */
    display: flex;
    width: 100%;
    height: 200px;
    background-color: gray;
}

#container > div {
    background-color: black;
    width: 100px;
    height: 100px;
    margin-right: 20px;
}

#container > div.big-child {
   -ms-flex-grow: 1;  /* IE 10 syntax */
   flex-grow: 1;
   margin-right: 0;
}

更多信息:
- http://css-tricks.com/snippets/css/a-guide-to-flexbox/
- http://css-tricks.com/old-flexbox-and-new-flexbox/

浏览器支持:http://caniuse.com/#feat=flexbox
(请注意,IE10受支持,但它实现了较旧的语法)

答案 1 :(得分:0)

如果你想使用花车,你可以在最后一个孩子身上使用overflow:hidden;来强迫它占据剩下的空间。

替代解决方案可能是使用flexbox(取决于您所需的浏览器支持)或CSS表。

&#13;
&#13;
#container {
  width: 100%;
  height: 200px;
  background-color: gray;
}
#container > div {
  box-sizing: border-box;
  margin-right: 0;
  height: 100px;
}
#container > div:not(:last-child) {
  margin-right: 10px;
}
.child {
  float: left;
  background-color: black;
  width: 100px;
}
.big-child {
  overflow: hidden;
  background-color: black;
  margin: 0 20px;
}
&#13;
<h4>Three Blocks</h4>
<div id="container">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="big-child"></div>
</div>

<h4>Two Blocks</h4>
<div id="container">
  <div class="child"></div>
  <div class="child"></div>
  <div class="big-child"></div>
</div>
&#13;
&#13;
&#13;