css - 调整未知数量的元素以填充父容器的宽度

标签 css

我需要将未知数量的 div(可能限制在 5 个左右)放入父容器中,并始终确保它们均等分配。我不确定这是否可以单独使用 CSS 来完成,但我想我最好问一下。所以如果我们知道使用了 3 个 div:

<style>
  .menu-button { 
    float: left;
    width: 33%;
  }
</style>
<div>
   <div class="menu-button">Button X</div>
   <div class="menu-button">Button Y</div>
   <div class="menu-button">Button Z</div>
</div>

似乎可行,但如果 .menu-button div 的数量未知怎么办?有没有更好的方法让它自动水平调整?

最佳答案

要对任何元素执行此操作,您有两种解决方案:

  • 让浏览器模拟表格行为
  • 使用灵活的盒子布局

例如,要构建一个水平菜单,每个 li 元素的宽度都相等,使用以下 HTML 代码:

<div id="menu">
  <ul>
    <li><a href="#">First Element</a></li>
    <li><a href="#">Second Element</a></li>
    <li><a href="#">Third Element</a></li>
    ...
    <li><a href="#">N Element</a></li>
  </ul>
</div>

使用表格布局,CSS 代码看起来像这样:

#menu{
  width: 100%; /* for instance */
  display: table;
  table-layout: fixed;
}
#menu ul{
  display: table-row;
}
#menu ul li{
  display: table-cell;
}

灵活的盒子布局是一种更现代的解决方案,它是 pretty widely supported现在:

#menu{
  width: 100%; /* for instance */
}
#menu ul{
  display: flex;
  flex-flow: row;
}
#menu ul li{
  flex-grow: 1;
}

关于css - 调整未知数量的元素以填充父容器的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942779/

相关文章:

css - 如何接收和显示带有样式表的 HTML 电子邮件?

HTML+CSS : combining <UL>/<OL> and faux-tabular format

html - 将浏览按钮样式设置为看起来像一个链接

html - 在页面加载时设置选项的背景颜色

jquery - 在 jQuery 中删除父 div 的类

html - 不使用容器清除 float

javascript - 如何在 div 上添加 jQuery 框

css - 推特引导导航栏中的圆 Angular 半径

php - 递归/子例程正则表达式以匹配 CSS 媒体查询

html - Mac/PC 上的字体渲染/行高问题(元素外部)