html - 使祖先 flexbox div 仅占用其具有设置宽度的 child 的宽度

标签 html css flexbox

我有一个使用 flex 显示的输入元素,我设置它的 flex-basis 宽度如下:

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

flex-row div 包含在 flex-container div 中。

我希望 flex-row 只占据输入所占用的宽度。

当我给 flex-container display: flex 时,它占据了 100% 的宽度。

当我给它 display: inline-flex 时,它会压缩输入,使其比 450px 小得多。

我真的不在乎flex-container的宽度,虽然它也能占据它的 child 的宽度会很好,但我如何制作 flex-row 具有与输入相同的宽度(即,当有足够的空间时,为 450px)?

.flex-container {
  display: flex;
}
.flex-row {
  display: flex;
  flex: 1;
  align-items: center;
  justify-content: center;
}
.flex-row input {
  flex: 0 1 450px;
}
<div class="flex-container">
  <div class="flex-row">
    <input type="text" name="query" class="searchbar" />
  </div>
</div>

here是一个 fiddle 的例子。

最佳答案

将与 flex-row 输入相同的 flex 属性添加到 flex-row。

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

如果您希望该行也居中,请按如下方式将对齐和对齐属性添加到 flex 容器。

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

关于html - 使祖先 flexbox div 仅占用其具有设置宽度的 child 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488216/

相关文章:

javascript - 需要帮助设置自动完成列表项的最大高度

javascript - 动态创建选择类

php - 在搜索栏中禁用以前搜索过的术语建议

html - 如何覆盖属于列方向 flex 容器一部分的一个元素的列方向?

html - 如何使用css3创建这种文字效果?

javascript - 无法在 Canvas 中旋转 Canvas

html - Bootstrap 日期选择器显示

html - Google 字体呈现时出现奇怪问题

javascript - Flex-basis 不扩展宽度

css - 如何将 Flexbox 与 Web 组件和影子 DOM 一起使用