如何在flexbox中放置项目以相等的宽度?

时间:2019-03-27 07:40:06

标签: html css css3 flexbox

我想将项目放置在flexbox中,且宽度相同。

在flexbox中,我有一个searchsvg,输入字段和一些文本的div。我希望他们每个人都可以根据flexbox的宽度自行选择相等的宽度。我不想手动提供每个项目的宽度。我尝试使用justify-content: space-evenly。这样,输入字段将比其余字段占用更多的宽度。

如何避免呢?下面是代码:

.wrapper {
  display: flex;
  flex-grow: 1;
}

.items_container {
  position: relative;
  width: 40px;
  height: 40px;
  top: 16px;
  margin-left: 16px;
  padding-left: 5px;
  display: flex;
  align-items: center;
  justify-content: space-evenly;
}

@media (min-width: 300px) {
  .items_container.expanded {
    width: 50%;
  }
}

.items_container.expanded .search_input_field {
  display: flex;
  align-items: center;
}
<div class="wrapper">
  <div class="items_container expanded">
    <div class="search_input_field">
      <div>
        <Svgsearch/>
      </div>
      <input type="text" placeholder="input" />
    </div>
    <div>dropdown to be added</div>
  </div>

2 个答案:

答案 0 :(得分:0)

我将flex-grow: 1从放置位置移开了,因为它什么也没做。这是影响子代的规则。因此,我将其移至影响flex父级.wrapper的所有直接子级。

.wrapper {
  display: flex;
  /* flex-grow: 1; <-- moved below */

  & > * {
    flex-grow: 1;
  }
}

enter image description here

jsFiddle

答案 1 :(得分:0)

.child元素应该平等地grow而不是shrink

.parent {
  display: flex;
} 

.child {
  flex: 1 0 0;
}


/* ignore */
.child {
  padding: 5px;
  height: 50px;
  background: lightcoral;
  margin: 2px;
  text-align: center;
}
<div class="parent">
  <div class="child">1</div>
  <div class="child">2</div>
  <div class="child">3</div>
</div>