Ответ
При уменьшении контейнера со вложенным flex могут возникнуть проблемы, если не заданы правильные свойства для управления поведением элементов. Основные нюансы:
-
Переполнение: если у flex-элементов фиксированная ширина (
width) илиflex-shrink: 0, они не будут сжиматься и выйдут за границы родителя. -
Перенос строк: без
flex-wrap: wrapэлементы останутся в одной строке, что может привести к переполнению.
Пример проблемного случая:
.container {
display: flex;
width: 300px; /* будет уменьшаться */
}
.item {
flex-shrink: 0;
width: 200px;
}
Решение:
.container {
display: flex;
flex-wrap: wrap; /* разрешить перенос */
min-width: 0; /* для вложенных flex */
}
.item {
flex: 1 1 auto; /* разрешить сжатие */
min-width: 0; /* важно для текста */
}