【问题标题】:flex basis not applied when two divs containing the element当两个 div 包含该元素时不应用弹性基础
【发布时间】:2017-03-21 07:37:49
【问题描述】:

我有一个输入元素,我想使用 flex shrink 来扩大和缩小它,但它的 flex-basis 大小没有被应用。

这是我的html:

<div class="flex-container">
    <div class="flex-row">
        <input type="text" name="query" class="searchbar" />
    </div>
<div>

还有我的 CSS:

.flex-container{
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: row;
  flex-wrap: wrap;
}

.flex-row input { flex: 0 1 450px; }

为什么没有应用基本尺寸?它被设置为比 450px 小得多的宽度。

Here 是一个例子。

【问题讨论】:

    标签: html css flexbox


    【解决方案1】:

    实际上这里发生的情况是您的输入的直接父级.flex-row 是一个简单的 div,没有 css 属性,也没有设置为 flex 容器,因此它的宽度是自动的并且环绕输入而不应用 flex 属性.要将 flex 属性应用于输入,请使用以下 css 使输入的父显示为 flex。

    .flex-container{
       display: flex;
     }
    
    .flex-row {
        display: flex;
        flex:1;
        align-items: center;
        justify-content: center;
    }
    
    .flex-container input { flex: 0 1 450px; }
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢!因此,如果我有一个包含许多不同行的 flex 容器来作为 flex 显示并且可以增长和缩小,那么我是否需要执行类似 .flex-container *{ display: flex} 的操作?为什么我需要 flex: 1 作为 flex-row?
    • 你可以使用 .flex-container > .flex-row {display:flex;弹性:1; } 将其应用于 flex-container 中的所有 flex-row 子 div。至于为什么我们为该行设置 flex:1 以便该行将占据它左右周围的所有可用空间而不包裹内部内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2016-08-01
    • 2013-05-06
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多