Почему это происходит?
По умолчанию элемент flex имеет
flex-grow:0;
flex-shrink:1;
flex-basis:auto;
flex-grow: 0; Значит, если осталось над пространством внутри контейнера элементы не будут расти.
flex-shrink: 1; Означает, что если внутри контейнера недостаточно места, элементы будут сжиматься, чтобы поместиться внутри
flex-based: auto; Означает, что flex-элемент будет иметь минимальную ширину / высоту, равную содержимому.
При такой настройке содержимое элементов будет размечено First тогда, если осталось над пространством, оно будет распределено равномерно.
Теперь огромные элементы будут занимать больше места для себя и все еще занимают свою часть оставшегося пространства, которое было равномерно распределено по всем элементам.
Существование огромного элемента заставит элементы сокращаться благодаря flex-shrink:1;
, и поэтому вы видите, что один элемент имеет больше места, чем другие.
Что такое Обойти это?
flex-grow:1;
flex-shrink:0;
flex-basis:0;
flex-gro w: 1; При увеличении до размера элементы равномерно распределяются.
flex-shrink: 0; Никогда не сжимаются
flex-based: 0 ; Разделить доступное пространство сначала , затем сложить содержимое.
html,
body {
margin: 0;
padding: 0;
}
.parent {
display: flex;
max-width: 500px;
background: #555;
color: #fff;
}
.child {
border: 1px solid #eee;
flex: 1 0 0;
}
<div class="parent">
<div class="child">text text text</div>
<div class="child">text text text</div>
<div class="child">text text text</div>
<div class="child">text text text text</div>
<div class="child">text text text</div>
<div class="child">text text text</div>
<div class="child">text text text</div>
<div class="child">text text text</div>
</div>