Kurs HTML i CSS · Moduł 4: Flexbox
Align content
W tej lekcji11
Właściwość "align-content" w modelu Flexbox pozwala na kontrolowanie rozmieszczenia wzdłuż osi poprzecznej (cross-axis) dla wielu wierszy elementów w kontenerze. Działa tylko wtedy, gdy elementy zajmują więcej miejsca niż jest dostępne na osi poprzecznej.
Oto kilka przykładów wartości właściwości "align-content":
- Właściwość "flex-start" - elementy są rozmieszczone na początku osi poprzecznej kontenera.
- Właściwość "flex-end" - elementy są rozmieszczone na końcu osi poprzecznej kontenera.
- Właściwość "center" - elementy są wyśrodkowane wzdłuż osi poprzecznej kontenera.
- Właściwość "space-between" - elementy są równomiernie rozmieszczone na osi poprzecznej, z równym odstępem między nimi. Pierwszy element jest przy początku osi, a ostatni przy końcu osi.
- Właściwość "space-around" - elementy są równomiernie rozmieszczone na osi poprzecznej, z równym odstępem między nimi oraz po obu stronach. Oznacza to, że odstęp między elementami jest większy niż odstęp przy krawędziach kontenera.
- Właściwość "space-evenly" - elementy są równomiernie rozmieszczone na osi poprzecznej, tak aby odstępy między nimi (i od krawędzi) były równe.
Przykładem użycia "align-content" może być sytuacja, gdy mamy kontener Flexbox z wieloma wierszami elementów i chcemy kontrolować ich rozmieszczenie wzdłuż osi poprzecznej. Możemy wybrać odpowiednią wartość właściwości "align-content", aby uzyskać pożądany układ, który jest estetyczny i funkcjonalny dla danej strony internetowej.
Ćwiczenie: Dopasowanie elementów za pomocą align-content
W tym ćwiczeniu nauczysz się, jak używać właściwości align-content w modelu Flexbox, aby precyzyjnie kontrolować rozmieszczenie elementów wzdłuż osi poprzecznej (cross-axis) dla wielu wierszy elementów w kontenerze. 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.
Krok 1: Stwórz podstawową strukturę dokumentu HTML
Najpierw stwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj element <section> z kilkoma elementami <div> w ciele dokumentu (<body>).
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Dopasowanie elementów za pomocą align-content</title>
</head>
<body>
<section class="container flex-start">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container flex-end">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container center">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-between">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-around">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-evenly">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
</body>
</html>Krok 2: Stwórz plik CSS
Otwórz lub utwórz nowy plik CSS i zapisz go jako styles.css.
Krok 3: Stylizacja podstawowa
Dodaj podstawowe style dla elementów <section> i <div>, aby były widoczne na stronie.
body {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
margin: 0;
padding: 20px;
}
.container {
display: flex;
flex-wrap: wrap;
border: 1px solid #000;
padding: 10px;
width: 80%;
height: 200px;
margin: 10px 0;
}
.container div {
background-color: lightblue;
margin: 5px;
padding: 20px;
text-align: center;
flex: 1 1 30%;
}Krok 4: Układ z align-content: flex-start
Dodaj styl dla klasy .flex-start, aby ustawić elementy na początku osi poprzecznej.
/* Układ z align-content: flex-start */
.flex-start {
align-content: flex-start;
}Krok 5: Układ z align-content: flex-end
Dodaj styl dla klasy .flex-end, aby ustawić elementy na końcu osi poprzecznej.
/* Układ z align-content: flex-end */
.flex-end {
align-content: flex-end;
}Krok 6: Układ z align-content: center
Dodaj styl dla klasy .center, aby wyśrodkować elementy wzdłuż osi poprzecznej.
/* Układ z align-content: center */
.center {
align-content: center;
}Krok 7: Układ z align-content: space-between
Dodaj styl dla klasy .space-between, aby równomiernie rozmieszczać elementy na osi poprzecznej, z równym odstępem między nimi.
/* Układ z align-content: space-between */
.space-between {
align-content: space-between;
}Krok 8: Układ z align-content: space-around
Dodaj styl dla klasy .space-around, aby równomiernie rozmieszczać elementy na osi poprzecznej, z równym odstępem wokół nich.
/* Układ z align-content: space-around */
.space-around {
align-content: space-around;
}Krok 9: Układ z align-content: space-evenly
Dodaj styl dla klasy .space-evenly, aby równomiernie rozmieszczać elementy na osi poprzecznej, z równymi odstępami między nimi i krawędziami kontenera.
/* Układ z align-content: space-evenly */
.space-evenly {
align-content: space-evenly;
}Wynik
Po wykonaniu wszystkich kroków twój plik HTML i CSS powinny wyglądać następująco:
Plik HTML (index.html)
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css"> <!-- Podłącz plik CSS -->
<title>Dopasowanie elementów za pomocą align-content</title>
</head>
<body>
<section class="container flex-start">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container flex-end">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container center">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-between">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-around">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
<section class="container space-evenly">
<div>Element 1</div>
<div>Element 2</div>
<div>Element 3</div>
<div>Element 4</div>
<div>Element 5</div>
</section>
</body>
</html>Plik CSS (styles.css)
body {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
margin: 0;
padding: 20px;
}
.container {
display: flex;
flex-wrap: wrap;
border: 1px solid #000;
padding: 10px;
width: 80%;
height: 200px;
margin: 10px 0;
}
.container div {
background-color: lightblue;
margin: 5px;
padding: 20px;
text-align: center;
flex: 1 1 30%;
}
/* Układ z align-content: flex-start */
.flex-start {
align-content: flex-start;
}
/* Układ z align-content: flex-end */
.flex-end {
align-content: flex-end;
}
/* Układ z align-content: center */
.center {
align-content: center;
}
/* Układ z align-content: space-between */
.space-between {
align-content: space-between;
}
/* Układ z align-content: space-around */
.space-around {
align-content: space-around;
}
/* Układ z align-content: space-evenly */
.space-evenly {
align-content: space-evenly;
}Zadanie dodatkowe
- Dodaj więcej sekcji z różnymi wartościami
align-content, aby lepiej zrozumieć, jak działają różne opcje. - Spróbuj dodać więcej stylów do swojej strony, np. zmieniając kolory, rozmiary i inne właściwości elementów, aby lepiej zrozumieć, jak działają różne opcje.
- Przetestuj swoje umiejętności, tworząc bardziej złożone układy z użyciem różnych kombinacji właściwości Flexbox.
Po wykonaniu tego ćwiczenia powinieneś lepiej rozumieć, jak używać właściwości align-content w modelu Flexbox, aby precyzyjnie kontrolować rozmieszczenie elementów wzdłuż osi poprzecznej.
Kod do tej lekcji: index.html
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flexbox - Flex Direction</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Flex Direction - Kierunek układu</h1>
<p class="subtitle">Określ główną oś kontenera flex</p>
<section class="demo-section">
<h2>flex-direction: row (domyślnie)</h2>
<div class="flex-container dir-row">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
</div>
<p class="description">Elementy ułożone w wierszu od lewej do prawej (→)</p>
</section>
<section class="demo-section">
<h2>flex-direction: row-reverse</h2>
<div class="flex-container dir-row-reverse">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
</div>
<p class="description">Elementy ułożone w wierszu od prawej do lewej (←)</p>
</section>
<section class="demo-section">
<h2>flex-direction: column</h2>
<div class="flex-container dir-column">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
</div>
<p class="description">Elementy ułożone w kolumnie od góry do dołu (↓)</p>
</section>
<section class="demo-section">
<h2>flex-direction: column-reverse</h2>
<div class="flex-container dir-column-reverse">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
</div>
<p class="description">Elementy ułożone w kolumnie od dołu do góry (↑)</p>
</section>
<section class="demo-section practice">
<h2>Praktyka: Egipska hierarchia</h2>
<p class="practice-description">Układamy hierarchię egipską używając flex-direction!</p>
<div class="hierarchy-container">
<div class="hierarchy-box">
<h3>Pozioma hierarchia (row)</h3>
<div class="hierarchy row-hierarchy">
<div class="rank">Faraon</div>
<div class="rank">Wezyr</div>
<div class="rank">Skryba</div>
<div class="rank">Chłop</div>
</div>
</div>
<div class="hierarchy-box">
<h3>Pionowa hierarchia (column)</h3>
<div class="hierarchy column-hierarchy">
<div class="rank">Faraon</div>
<div class="rank">Wezyr</div>
<div class="rank">Skryba</div>
<div class="rank">Chłop</div>
</div>
</div>
</div>
</section>
</div>
</body>
</html>Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Kiedy właściwość align-content ma efekt?
Zadania praktyczne w grze
- Układanie w pionie
Ułóż kroki potrzebne, aby align-content zaczął działać w kontenerze Flexbox: