【问题标题】:Dynamic width of div elements inside a fixed width div固定宽度 div 内 div 元素的动态宽度
【发布时间】:2015-10-14 14:57:44
【问题描述】:

我正在处理一个在多个页面中使用的固定宽度的父 div。这个 div 里面有很多(3-5)个子 div 元素。对于不同的页面,子 div 元素的数量是不同的,即第 1 页,父 div 有 3 个子 div,第 2 页,父 div 有 5 个子 div 等等。

如何设置这些子元素的宽度,使它们在每个页面中完全占据父 div 的宽度?

附:约束是不使用 SASS/Less 和 Bootstrap。

【问题讨论】:

标签: css


【解决方案1】:

基本上,您要求一个表格,其中每个单元格的宽度应与父单元的固定宽度成比例相同。

如果您知道最大可能的子节点数,则在 CSS 中是可能的(如果不知道,您将始终使用所有空间,但每个单元格的宽度会根据内容而变化)

当您知道孩子的最大数量时,将该属性添加到类.heightmax-width:Npx 其中N 是父母的width 除以孩子的数量

.container {
    border:1px solid #000;
    border-radius:5px;
    width:500px;
    display:table;
}
.child{
    display:table-cell;
    border-right:1px solid #000;
}

.child:last-of-type {
    border:none;
}
.height{
    min-height:100px;
}
<div class="container height">
    <div class="child height">Child 1</div>
    <div class="child height">Child 2</div>
    <div class="child height">Child 3</div>
    <div class="child height">Child 4</div>
    <div class="child height">Child 5</div>
</div>

【讨论】:

  • 我不知道 display:table 是否适用于 IE 9?你有什么想法吗?
  • IE 是唯一让我不确定使用表属性的东西!非常感谢!
【解决方案2】:

你可能想试试flex

.parent {
  width: 100%;
  background-color: blue;
  display: flex;
}

.child {
  height: 20px;
  background-color: red;
  margin: 10px;
  display: flex;
  width: 100%;
}
<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
  <div class="child"></div>
</div>

【讨论】:

  • 它可以在旧版本的 Internet Explorer 中使用吗?
  • 很遗憾没有,在 IE10 之前没有
  • 最终用户也在使用旧版本的IE,请推荐一些也可以跨浏览器兼容的东西。
  • 那为什么不手动设置呢?例如,对于 3 个孩子 divs,设置他们的 width: 33.33%;,对于 4 个孩子 divs,设置他们的 width: 25%;
  • 对不起,你提到了dynamic
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
相关资源
最近更新 更多