Wyobraź sobie procesję kapłanów w starożytnej świątyni egipskiej. Jeśli korytarz jest wystarczająco szeroki, wszyscy kapłani idą w jednym rzędzie. Ale gdy korytarz się zwęża, część z nich musi przejść do następnego rzędu. Dokładnie tak działa właściwość
flex-wrap w CSS Flexbox!Domyślnie wszystkie elementy z działającą na rodzica deklaracją
display: flex; będą próbowały zmieścić się w jednej linii. Możesz to zmienić i zezwolić elementom na zawijanie elementów do następnych linii.1section {
2 display: flex;
3 flex-wrap: nowrap | wrap | wrap-reverse;
4}W przypadku modelu Flexboxa, mamy również możliwość kontrolowania zachowania zawijania elementów, gdy nie mieszczą się w jednym wierszu. Oto trzy opcje dotyczące zawijania:
Opcja "nowrap" (domyślna) - wszystkie elementy będą trzymane w jednym wierszu, bez zawijania. Elementy będą próbowały zmieścić się w dostępnej przestrzeni, bez tworzenia nowych linii.
Opcja "wrap" - elementy będą zawijane w nowe linie, od góry do dołu. Gdy elementy nie mieszczą się w bieżącym wierszu, zostaną przeniesione do kolejnej linii, tworząc układ wieloliniowy.
Opcja "wrap-reverse" - elementy będą zawijane w nowe linie, ale w odwrotnej kolejności, czyli od dołu do góry. Elementy, które nie mieszczą się w bieżącej linii, będą przenoszone do poprzedniej linii.
Dzięki tym opcjom możemy elastycznie kontrolować układ elementów w kontenerze Flexboxa, uwzględniając ich zawijanie na nowe linie, co pozwala na odpowiednie dopasowanie układu do dostępnej przestrzeni.
W tym ćwiczeniu nauczysz się, jak używać właściwości
flex-wrap w modelu Flexbox, aby kontrolować zawijanie elementów, gdy nie mieszczą się one w jednym wierszu. Twoim zadaniem będzie utworzenie strony internetowej z kontenerami, które będą rozmieszczane w różnych układach za pomocą tej właściwości.Najpierw stwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj element
<section> z kilkoma elementami <div> w ciele dokumentu (<body>).1<!DOCTYPE html>
2<html lang="pl">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
7 <title>Zawijanie elementów</title>
8</head>
9<body>
10 <section class="container nowrap">
11 <div>Element 1</div>
12 <div>Element 2</div>
13 <div>Element 3</div>
14 <div>Element 4</div>
15 <div>Element 5</div>
16 <div>Element 6</div>
17 <div>Element 7</div>
18 <div>Element 8</div>
19 </section>
20 <section class="container wrap">
21 <div>Element 1</div>
22 <div>Element 2</div>
23 <div>Element 3</div>
24 <div>Element 4</div>
25 <div>Element 5</div>
26 <div>Element 6</div>
27 <div>Element 7</div>
28 <div>Element 8</div>
29 </section>
30 <section class="container wrap-reverse">
31 <div>Element 1</div>
32 <div>Element 2</div>
33 <div>Element 3</div>
34 <div>Element 4</div>
35 <div>Element 5</div>
36 <div>Element 6</div>
37 <div>Element 7</div>
38 <div>Element 8</div>
39 </section>
40</body>
41</html>Otwórz lub utwórz nowy plik CSS i zapisz go jako
styles.css.Dodaj podstawowe style dla elementów
<section> i <div>, aby były widoczne na stronie.1body {
2 display: flex;
3 flex-direction: column;
4 align-items: center;
5 gap: 20px;
6 margin: 0;
7 padding: 20px;
8}
9
10.container {
11 display: flex;
12 border: 1px solid #000;
13 padding: 10px;
14 width: 80%;
15 height: auto;
16 margin: 10px 0;
17 flex-wrap: nowrap; /* Domyślna wartość */
18}
19
20.container div {
21 background-color: lightblue;
22 margin: 5px;
23 padding: 20px;
24 text-align: center;
25 flex: 1 1 30%;
26}flex-wrap: nowrapDodaj styl dla klasy
.nowrap, aby ustawić elementy w jednym wierszu, bez zawijania.1/* Układ z flex-wrap: nowrap */
2.nowrap {
3 flex-wrap: nowrap;
4}flex-wrap: wrapDodaj styl dla klasy
.wrap, aby zawijać elementy w nowe linie, gdy nie mieszczą się w jednym wierszu.1/* Układ z flex-wrap: wrap */
2.wrap {
3 flex-wrap: wrap;
4}flex-wrap: wrap-reverseDodaj styl dla klasy
.wrap-reverse, aby zawijać elementy w nowe linie w odwrotnej kolejności, czyli od dołu do góry.1/* Układ z flex-wrap: wrap-reverse */
2.wrap-reverse {
3 flex-wrap: wrap-reverse;
4}Po wykonaniu wszystkich kroków twój plik HTML i CSS powinny wyglądać następująco:
1<!DOCTYPE html>
2<html lang="pl">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
7 <title>Zawijanie elementów</title>
8</head>
9<body>
10 <section class="container nowrap">
11 <div>Element 1</div>
12 <div>Element 2</div>
13 <div>Element 3</div>
14 <div>Element 4</div>
15 <div>Element 5</div>
16 <div>Element 6</div>
17 <div>Element 7</div>
18 <div>Element 8</div>
19 </section>
20 <section class="container wrap">
21 <div>Element 1</div>
22 <div>Element 2</div>
23 <div>Element 3</div>
24 <div>Element 4</div>
25 <div>Element 5</div>
26 <div>Element 6</div>
27 <div>Element 7</div>
28 <div>Element 8</div>
29 </section>
30 <section class="container wrap-reverse">
31 <div>Element 1</div>
32 <div>Element 2</div>
33 <div>Element 3</div>
34 <div>Element 4</div>
35 <div>Element 5</div>
36 <div>Element 6</div>
37 <div>Element 7</div>
38 <div>Element 8</div>
39 </section>
40</body>
41</html>1body {
2 display: flex;
3 flex-direction: column;
4 align-items: center;
5 gap: 20px;
6 margin: 0;
7 padding: 20px;
8}
9
10.container {
11 display: flex;
12 border: 1px solid #000;
13 padding: 10px;
14 width: 80%;
15 height: auto;
16 margin: 10px 0;
17 flex-wrap: nowrap; /* Domyślna wartość */
18}
19
20.container div {
21 background-color: lightblue;
22 margin: 5px;
23 padding: 20px;
24 text-align: center;
25 flex: 1 1 30%;
26}
27
28/* Układ z flex-wrap: nowrap */
29.nowrap {
30 flex-wrap: nowrap;
31}
32
33/* Układ z flex-wrap: wrap */
34.wrap {
35 flex-wrap: wrap;
36}
37
38/* Układ z flex-wrap: wrap-reverse */
39.wrap-reverse {
40 flex-wrap: wrap-reverse;
41}flex-wrap, aby lepiej zrozumieć, jak działają różne opcje.Po wykonaniu tego ćwiczenia powinieneś lepiej rozumieć, jak używać właściwości
flex-wrap w modelu Flexbox, aby kontrolować zawijanie elementów, gdy nie mieszczą się one w jednym wierszu.Pamiętaj:
flex-wrap to jak planowanie procesji w egipskiej świątyni - decydujesz, czy uczestnicy mają się tłoczyć w jednym rzędzie, czy mogą elegancko przejść do kolejnych!