Sobes.tech
Junior

Πώς λειτουργούν οι ιδιότητες flex-grow και flex-shrink;

sobes.tech AI

Απάντηση από AI

Το flex-grow και το flex-shrink καθορίζουν πώς τα στοιχεία προσαρμόζουν το μέγεθός τους με ευελιξία μέσα στο flex-container, αντίστοιχα όταν υπάρχει ελεύθερος χώρος ή όταν ο χώρος είναι ανεπαρκής.

Το flex-grow - καθορίζει τον συντελεστή με τον οποίο ένα στοιχείο πρέπει να αυξάνεται όταν υπάρχει ελεύθερος χώρος στον κοντέινερ. Η προεπιλεγμένη τιμή είναι 0 (το στοιχείο δεν τεντώνεται). Αν πολλά στοιχεία έχουν flex-grow μεγαλύτερο από 0, ο ελεύθερος χώρος διανέμεται μεταξύ τους αναλογικά με τις τιμές flex-grow.

.item {
  flex-grow: 1; /* Το στοιχείο θα χρησιμοποιήσει όλο τον διαθέσιμο ελεύθερο χώρο */
}

Το flex-shrink - καθορίζει τον συντελεστή με τον οποίο ένα στοιχείο πρέπει να συμπιεστεί όταν ο χώρος στον κοντέινερ είναι ανεπαρκής. Η προεπιλεγμένη τιμή είναι 1 (το στοιχείο συμπιέζεται αναλογικά με άλλα συμπιεζόμενα στοιχεία). Μια τιμή 0 αποτρέπει τη συμπίεση του στοιχείου.

.item {
  flex-shrink: 0; /* Το στοιχείο δεν θα συμπιεστεί */
}

Μαζί με το flex-basis, σχηματίζουν την σύντομη ιδιότητα flex: flex: <flex-grow> <flex-shrink> <flex-basis>.

Παράδειγμα χρήσης:

<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; /* Παράδειγμα σταθερού πλάτους κοντέινερ */
}

.item {
  flex-basis: 100px; /* Βασικό μέγεθος όλων των στοιχείων */
}

.item-1 {
  flex-grow: 1; /* Το Item 1 θα χρησιμοποιήσει τον ελεύθερο χώρο */
}

.item-2 {
  flex-shrink: 0; /* Το Item 2 δεν θα συμπιεστεί */
}

Αν το κοντέινερ είναι πιο φαρδύ από 200px (100px + 100px), το item-1 θα καταλάβει όλο τον υπόλοιπο ελεύθερο χώρο. Αν το κοντέινερ ήδη μετράει 200px, το item-2 θα διατηρήσει το βασικό του μέγεθος των 100px, και το item-1 θα συμπιεστεί.