CSS 让最后一个子元素动态获取父元素留下的宽度

问题描述 投票:0回答:2

在我的例子中,孩子的号码是从服务器端返回的。如果孩子少于 6 个,我需要添加虚拟孩子来代替家长的左侧位置。

例如:

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

小提琴

<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 动态改变子宽度?

更新

找到了一个很好的网站,它可以根据你的盒子的需要生成CSS代码。

html css width
2个回答
2
投票

你可以使用

flexbox

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

#container{
    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 {
   flex-grow: 1;
   margin-right: 0;
}
<div id="container">
    <div class="child">1</div>
    <div class="child">2</div>
    <div class="child">3</div>
    <div class="big-child"></div>
</div>


进一步阅读:


0
投票

如果你想使用浮动,你可以在最后一个孩子上使用

overflow:hidden;
来强制它占据剩余空间。

替代解决方案可能是使用

flexbox
(取决于您所需的浏览器支持)或 CSS 表。

#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;
}
<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>

© www.soinside.com 2019 - 2024. All rights reserved.