代码之家  ›  专栏  ›  技术社区  ›  accelerate

使用空白创建大小相等的div:nowrap

  •  1
  • accelerate  · 技术社区  · 7 年前

    我试图在一行中创建一系列div,每个div的宽度相等,宽度是最长div的长度。换言之,如果我有以下内容:

    <div class="wrapper">
      <div>Hello</div>
      <div>Goodbye</div>
      <div>Some really long text</div>
      <div>More text</div>
    </div>
    

    我希望所有文本都在一行上(所以 white-space: nowrap ),每个div都是最长div的长度,在本例中,这将是“一些非常长的文本”。

    我的方法是使用内联flex,如下所示:

    .wrapper {
      display: inline-flex;
      flex-flow: row nowrap;
    }
    .wrapper > div {
      border: 1px solid red;
      flex: 1 1 25%;
      padding: 5px 10px;
      white-space: nowrap;
    }
    

    这种方法不起作用,因为我的div大小不同。 然而 ,如果我删除 空白:nowrap ,则我的div大小相等,但现在文本已换行。

    这是两个版本的代码笔: https://codepen.io/unpossible/pen/xjxKBM

    那么,有没有办法将第一次尝试的无包装与第二次尝试的等长div结合起来呢?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Adam ZBWR    7 年前

    使用网格布局而不是flex更改包装器 inline-grid

    你可以在这里找到更多信息 CSS Grid Layout

    检查一下这个 codepen for your answer

    .wrapper {
      display: inline-grid;
      grid-template-columns: 1fr 1fr 1fr 1fr;
    }
        2
  •  0
  •   Obsidian Age    7 年前

    您只需设置 flex-shrink 0
    本质上,你只是在寻找 flex: 1 0 25% 而不是 flex: 1 1 25% :

    .wrapper {
      display: inline-flex;
      flex-flow: row nowrap;
    }
    .wrapper > div {
      border: 1px solid red;
      flex: 1 0 25%;
      padding: 5px 10px;
      white-space: nowrap;
    }
    <div class="wrapper">
      <div>Hello</div>
      <div>Goodbye</div>
      <div>Some really long text</div>
      <div>More text</div>
    </div>