使一个flex项目具有固定宽度,其它兄弟元素大小相等

4
我有四个列表项,我想让其中三个保持相同的大小,另一个的宽度为300像素。 我的HTML代码:
   <ul class="test">
      <li class="desc">Test description</li>
      <li class="test">Test</li>
      <li class="test">Test</li>
      <li class="test">Test</li>
    </ul>

我的SASS:
      ul.test {
        flex: 1 0 auto;
        flex-direction: row;
        display: flex;
      }

      li.desc{
        width: 300px;
      }

      li.test{
        background: green;
        flex: 1 0 auto
      }

我想让第一个li的宽度为300像素,然后其他三个li的大小相同。
1个回答

7

ul.test {
  display: flex;
  padding: 0;
  list-style: none;
}

li.desc {
  width: 300px;
  flex-shrink: 0;           /* disable default shrinking behavior */
  background-color: orange;
}

li.test {
  flex: 1;                  /* distribute free space evenly among items */
  background: lightgreen;
}
li{ border-right: 1px solid black; }
<ul class="test">
  <li class="desc">Test description</li>
  <li class="test">Test</li>
  <li class="test">Test</li>
  <li class="test">Test</li>
</ul>


嗨,Michael,我增加了一个字段的文本,框的宽度增加了。如何使右侧的三个 li 保持相同的大小? - AngularM
尝试在这三个项目上使用以下代码:flex: 0 0 calc(33% - 100px); 这会将每个项目设置为容器中的1/3空间,减去固定同级元素的1/3。 - Michael Benjamin
谢谢。我不明白为什么你要将最小宽度设置为0? - AngularM
我在你的 Plunkr 演示中发布了一个带有解释的链接。这是链接:https://dev59.com/mVoV5IYBdhLWcg3wc-Ym - Michael Benjamin
谢谢。让我开心了! - Geradlus_RU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接