Sobes.tech
Junior

Como funcionam as propriedades flex-grow e flex-shrink?

sobes.tech IA

Resposta da IA

flex-grow e flex-shrink determinam como os elementos ajustam o seu tamanho de forma adaptativa dentro do contêiner flex, quando há espaço livre ou insuficiente, respetivamente.

flex-grow - determina o coeficiente pelo qual um elemento deve aumentar quando há espaço livre no contêiner. O valor padrão é 0 (o elemento não se estende). Se vários elementos tiverem flex-grow maior que 0, o espaço livre é distribuído entre eles proporcionalmente aos seus valores de flex-grow.

.item {
  flex-grow: 1; /* O elemento usará todo o espaço livre disponível */
}

flex-shrink - determina o coeficiente pelo qual um elemento deve encolher quando há espaço insuficiente no contêiner. O valor padrão é 1 (o elemento encolhe proporcionalmente aos outros elementos que também encolhem). Um valor de 0 impede que o elemento encolha.

.item {
  flex-shrink: 0; /* O elemento não encolherá */
}

Juntamente com flex-basis, eles formam a propriedade abreviada flex: flex: <flex-grow> <flex-shrink> <flex-basis>.

Exemplo de uso:

<div class="container">
  <div class="item item-1">Item 1</div>
  <div class="item item-2">Item 2</div>
</div>
.container {
  display: flex;
  width: 400px; /* Exemplo de largura fixa do contêiner */
}

.item {
  flex-basis: 100px; /* Tamanho base de todos os elementos */
}

.item-1 {
  flex-grow: 1; /* O Item 1 usará o espaço livre */
}

.item-2 {
  flex-shrink: 0; /* O Item 2 não encolherá */
}

Se o contêiner for mais largo que 200px (100px + 100px), item-1 ocupará todo o espaço livre restante. Se o contêiner já tiver 200px, item-2 manterá o seu tamanho base de 100px, e item-1 será encolhido.