Flex-grow, Flex-shrink, Flex-basis w CSS3

Właściwości flex-grow, flex-shrink, i flex-basis stanowią fundament elastycznego układu elementów w Flexbox CSS3. Pozwalają one na precyzyjną kontrolę rozmiarów elementów flex w kontenerze, zarówno w przypadku dostępnej dodatkowej przestrzeni, jak i konieczności zmniejszenia elementów, aby zmieściły się w kontenerze.

Flex-grow

Flex-grow określa zdolność elementu do rozciągania się w celu zajęcia dostępnej przestrzeni w kontenerze. Wartość to liczba określająca proporcje, w jakich elementy powinny rozdzielić między siebie dostępną przestrzeń.

Przykład użycia flex-grow:
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Flex-grow w CSS3</title>
    <style>
        .container {
            display: flex;
            width: 100%;
        }
        
        .box {
            flex-grow: 1;
            margin: 10px;
            padding: 20px;
            background-color: lightblue;
            text-align: center;
        }
        
        .box2 {
            flex-grow: 2;
            background-color: lightcoral;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">Box 1</div>
        <div class="box box2">Box 2</div>
        <div class="box">Box 3</div>
    </div>
</body>
</html>

Flex-shrink

Flex-shrink definiuje zdolność elementu do zmniejszania się, kiedy całkowity rozmiar elementów flex przekracza rozmiar kontenera. Podobnie jak flex-grow, przyjmuje wartość liczbową, która określa, jak silnie element ma się zmniejszać w stosunku do innych elementów.

Przykład użycia flex-shrink:
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Flex-shrink w CSS3</title>
    <style>
        .container {
            display: flex;
            width: 100%;
            background-color: #f0f0f0;
        }
        
        .box {
            width: 200px;
            flex-shrink: 1; /* Domyślna wartość */
            margin: 10px;
            padding: 20px;
            background-color: lightblue;
            text-align: center;
        }
        
        .box2 {
            width: 200px;
            flex-shrink: 0; /* Nie zmniejsza się */
            background-color: lightcoral;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">Box 1 (flex-shrink: 1)</div>
        <div class="box box2">Box 2 (flex-shrink: 0)</div>
        <div class="box">Box 3 (flex-shrink: 1)</div>
    </div>
</body>
</html>

W tym scenariuszu, jeśli kontener nie może pomieścić wszystkich boxów, Box 2 nie zmniejszy swojego rozmiaru dzięki flex-shrink: 0, podczas gdy inne boxy (z flex-shrink: 1) mogą się zmniejszać, aby dostosować się do dostępnej przestrzeni.

Przykład użycia Flex-grow w CSS3

Flex-grow pozwala elementom flex na rozciąganie się, aby zająć dostępną przestrzeń w kontenerze. Oto kompletny przykład demonstrujący jak można użyć flex-grow do kontrolowania rozmiaru elementów.

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Flex-grow w CSS3</title>
    <style>
        .container {
            display: flex;
            width: 100%;
            background-color: #f0f0f0;
        }
        
        .box {
            flex-grow: 1;
            margin: 10px;
            padding: 20px;
            background-color: lightblue;
            text-align: center;
        }
        
        .box2 {
            flex-grow: 2;
            background-color: lightcoral;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">Box 1 (flex-grow: 1)</div>
        <div class="box box2">Box 2 (flex-grow: 2)</div>
        <div class="box">Box 3 (flex-grow: 1)</div>
    </div>
</body>
</html>

W tym przykładzie, Box 2 ma flex-grow ustawione na 2, co oznacza, że weźmie on dwa razy więcej dostępnej przestrzeni niż inne boxy, które mają flex-grow ustawione na 1.

Podsumowanie

Właściwości flex-grow, flex-shrink, i flex-basis są kluczowymi narzędziami w projektowaniu elastycznych układów za pomocą Flexboxa. Pozwalają one na dynamiczne dostosowywanie rozmiarów elementów flex, zapewniając płynne i responsywne interfejsy użytkownika niezależnie od rozmiaru ekranu. Zrozumienie i stosowanie tych właściwości umożliwia tworzenie zaawansowanych układów strony, które są zarówno estetyczne, jak i funkcjonalne.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video WebDevelopera w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top