Назад к вопросам
Junior
78
questionbank
Как функционируют свойства flex-grow и flex-shrink?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
flex-grow и flex-shrink управляют тем, как flex-элементы распределяют свободное пространство внутри flex-контейнера.
flex-grow:
- Определяет, какую часть доступного свободного пространства в flex-контейнере займет элемент, если свободное пространство есть.
- По умолчанию
flex-grow: 0, что означает, что элемент не увеличивается. - Значение - неотрицательное число.
- Если у нескольких элементов
flex-growбольше 0, свободное пространство распределяется между ними пропорционально их значениямflex-grow.
flex-shrink:
- Определяет, насколько элемент будет сжиматься, если доступное пространство в flex-контейнере меньше суммы базовых размеров всех flex-элементов.
- По умолчанию
flex-shrink: 1, что означает, что элемент может сжиматься. - Значение - неотрицательное число.
- Чем больше значение
flex-shrink, тем сильнее элемент будет сжиматься по сравнению с другими элементами с меньшим значением. - При сжатии учитывается базовая ширина элемента (
flex-basisилиwidth).
Пример:
.container {
display: flex;
width: 500px;
/* Общая ширина контейнера */
}
.item {
flex-basis: 100px;
/* Базовая ширина каждого элемента */
}
.item:nth-child(1) {
flex-grow: 1;
flex-shrink: 1; /* Значения по умолчанию */
}
.item:nth-child(2) {
flex-grow: 2;
flex-shrink: 0; /* Не сжимается */
}
.item:nth-child(3) {
flex-grow: 0; /* Не увеличивается */
flex-shrink: 2; /* Сжимается сильнее */
}
Если сумма базовых ширин (300px) меньше ширины контейнера (500px), оставшееся пространство (200px) распределится между первым и вторым элементами в соотношении flex-grow 1:2.
Если сумма базовых ширин больше ширины контейнера, элементы будут сжиматься в соответствии с их значениями flex-shrink и их базовыми размерами. Элемент с flex-shrink: 0 не будет сжиматься.