使用 flexbox,我可以有 1 个固定宽度的列和 1 个占用其余宽度的列吗? [复制]

Posted

技术标签:

【中文标题】使用 flexbox,我可以有 1 个固定宽度的列和 1 个占用其余宽度的列吗? [复制]【英文标题】:Using flexbox, can I have 1 fixed-width column and 1 column that takes the rest of the width? [duplicate] 【发布时间】:2018-12-26 22:00:55 【问题描述】:

目前我有一些类似于下面的代码。我试图使红色列无响应,设置宽度为 300px,但保持蓝色列的响应性。

.specific-image-container 
    display: flex;
    position: relative;
    width: 100%;

.specific-image-column 
    flex: 4;
    background-color: blue;

.more-images-column 
    flex: 1;
    background-color: red;

.content 
  height: 300px;
<div class="specific-image-container">

    <div class="specific-image-column">
        <div class='content'></div>
    </div>
    
    <div class="more-images-column">
        <div class='content'></div>
    </div>
    
</div>

【问题讨论】:

【参考方案1】:

是的,将固定列设置为flex-grow: 0(因此它不会增长)、flex-shrink: 0(因此它不会缩小)和flex-basis: 300px(因此它保持固定在 300 像素)。

jsFiddle demo

.specific-image-container 
    display: flex;

.specific-image-column 
    flex: 1;
    background-color: blue;

.more-images-column 
    flex: 0 0 300px; /* new */
    background-color: red;

.content 
  height: 300px;
<div class="specific-image-container">

  <div class="specific-image-column">
    <div class='content'></div>
  </div>

  <div class="more-images-column">
    <div class='content'></div>
  </div>

</div>

【讨论】:

工作就像一个魅力! @michael 这个已经有太多骗子了;) 好吧@dippas..你是对的..我应该先看看周围【参考方案2】:

尝试使用flex-basis 规则。您可以使用此规则代替 flexbox 元素中的宽度。您还可以使用 calc 将第一列设置为 100% - 300px 以确保 300px 优先。

.specific-image-container 
    display: flex;
    position: relative;
    width: 100%;

.specific-image-column 
    flex-basis: calc(100% - 300px);
    background-color: blue;

.more-images-column 
    flex-basis: 300px;
    background-color: red;

.content 
  height: 300px;
<div class="specific-image-container">

    <div class="specific-image-column">
        <div class='content'></div>
    </div>
    
    <div class="more-images-column">
        <div class='content'></div>
    </div>
    
</div>

【讨论】:

【参考方案3】:

在无响应元素上设置flex-shrink: 0; width: 300px;,在灵活元素上设置flex-grow: 1;。完成此操作后,您可以删除 flex 属性。

【讨论】:

以上是关于使用 flexbox,我可以有 1 个固定宽度的列和 1 个占用其余宽度的列吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为 flexbox 单元格分配相同的宽度

React-Table 列固定宽度破坏了整个表格

将按钮固定到 flexbox 列布局的底部,margin-top:auto 不起作用

固定宽度的孩子在 flexbox 中缩小 [重复]

具有固定列宽的流动 flexbox 网格

flexbox 可以处理不同大小但行高一致的列吗?