Как разместить вещи во flexbox, взять одинаковую ширину - PullRequest
1 голос
/ 27 марта 2019

Я хочу, чтобы элементы во флексбоксе имели одинаковую ширину.

Внутри 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 голосов
/ 27 марта 2019

.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>
0 голосов
/ 27 марта 2019

Я переехал flex-grow: 1 с того места, где вы его разместили, потому что он ничего не делал.Это правило, которое затрагивает гибких детей.Поэтому я переместил его, чтобы повлиять на всех прямых потомков гибкого родителя, .wrapper.

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

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

enter image description here

jsFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...