try 使用最多包含5个项目、最少包含3个项目的Flexbox导航,但它没有在所有元素之间平均分配宽度.

Fiddle

我为这个建模的教程是http://www.sitepoint.com/responsive-fluid-width-variable-item-navigation-css/

萨斯

* {
  font-size: 16px;
}

.tabs {
  max-width: 1010px;
  width: 100%;
  height: 5rem;
  border-bottom: solid 1px grey;
  margin: 0 0 0 6.5rem;
  display: table;
  table-layout: fixed;
}
.tabs ul {
  margin: 0;
  display: flex;
  flex-direction: row;
}
.tabs ul li {
  flex-grow: 1;
  list-style: none;
  text-align: center;
  font-size: 1.313rem;
  background: blue;
  color: white;
  height: inherit;
  left: auto;
  vertical-align: top;
  text-align: left;
  padding: 20px 20px 20px 70px;
  border-top-left-radius: 20px;
  border: solid 1px blue;
  cursor: pointer;
}
.tabs ul li.active {
  background: white;
  color: blue;
}
.tabs ul li:before {
  content: "";
}
<div class="tabs">
  <ul>
    <li class="active" data-tab="1">Pizza</li>
    <li data-tab="2">Chicken Noodle Soup</li>
    <li data-tab="3">Peanut Butter</li>
    <li data-tab="4">Fish</li>
  </ul>
</div>

推荐答案

有一点在你链接的文章中没有提到,那就是flex-basis.默认情况下,flex-basisauto.

the spec:

如果指定的弹性基准是自动的,则使用的弹性基准是弹性项目的主尺寸属性的值.(这本身可以是关键字auto,它根据flex项目的内容调整其大小.)

每个flex项目都有一个flex-basis,这有点像它的初始大小.然后,所有剩余的可用空间按比例(基于flex-grow)分布在项目之间.对于auto,这一基础是内容大小(或width定义的大小,等等).因此,在您的示例中,文本较大的项目总体上被赋予了更多的空间.

如果希望元素完全均匀,可以设置为flex-basis: 0.这会将flex basis设置为0,然后任何剩余空间(由于所有Basise均为0,因此将为所有空间)将基于flex-grow按比例分布.

li {
    flex-grow: 1;
    flex-basis: 0;
    /* ... */
}

This diagram from the spec很好地说明了这一点.

用你的小提琴演奏here is a working example.

Html相关问答推荐

为移动显示重新排序内容

如何格式化HTML文本,使其环绕关键字

在Chrome中使用手写笔时,滚动条方向反转

为什么在添加文本时网格区域会调整大小?

在窄屏幕上显示表格,每个单元格占一行

具有可展开行的棱角material 表(垫子表),折叠时行之间仍有间隙

类型';联系人组件';上不存在属性';name FormControl';

仅在过渡之前删除填充

元素在向x提供溢出时被隐藏

如何制作带有粘性头和脚的可滚动车身

目标第一个祖先标签的 XPath

Github上部署需要花费几小时时间:等待github pages部署批准

如何配置 prettier 使其以 Vue.js 模板语法的特定方式运行?

在 iPhone 上分隔 HTML 邮箱输入中的多个邮箱条目

pull-right 不适用于 bootstrap alert 内的按钮

高度大于页面高度和页面大于覆盖的 CSS 覆盖

使用 sprite 的问题,字符 sprite 中的额外边距

如何清除html输入中的文本

水平对齐两列中的两个按钮 同一级别

有没有办法使用 CSS border-radius 创建 HTML 视频标签的三角形显示?