Kurs HTML i CSS · Moduł 4: Flexbox
Zadanie Główne: Wirtualna Świątynia Flexbox
W tej lekcji7
Czas na główne zadanie modułu! Jak Mohamed mówi: "Prawdziwy architekt potrafi zbudować pełną świątynię, łącząc wszystkie poznane techniki." W tym zadaniu stworzysz pełną stronę internetową z nagłówkiem, nawigacją, główną sekcją i stopką - wszystko zbudowane za pomocą Flexboxa. Struktura strony będzie responsywna i elastyczna, jak plan idealnej egipskiej świątyni.
Krok 1: Stwórz podstawową strukturę dokumentu HTML
Utwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj elementy <header>, <nav>, <main> i <footer>, aby utworzyć sekcje strony.
<!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>Moja Strona WWW</title>
</head>
<body>
<header class="header">
<h1>Moja Strona WWW</h1>
<nav class="nav">
<ul>
<li><a href="#">Strona główna</a></li>
<li><a href="#">O nas</a></li>
<li><a href="#">Usługi</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
</nav>
</header>
<main class="main">
<section class="content">
<h2>Witamy na naszej stronie</h2>
<p>To jest przykładowy tekst w głównej sekcji strony. Możesz tu dodać więcej informacji o swojej firmie, produktach lub usługach.</p>
</section>
<aside class="sidebar">
<h2>Aktualności</h2>
<p>Najświeższe informacje o naszej firmie i branży.</p>
</aside>
</main>
<footer class="footer">
<p>© 2023 Moja Strona WWW. Wszelkie prawa zastrzeżone.</p>
</footer>
</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 .header, .nav, .main, .content, .sidebar i .footer.
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
.header {
background-color: #333;
color: #fff;
padding: 20px;
text-align: center;
}
.nav ul {
list-style-type: none;
padding: 0;
display: flex;
justify-content: center;
}
.nav li {
margin: 0 15px;
}
.nav a {
color: #fff;
text-decoration: none;
font-weight: bold;
}
.main {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 20px;
background-color: #fff;
}
.content {
flex: 1;
min-width: 60%;
padding: 20px;
}
.sidebar {
flex: 1;
min-width: 30%;
padding: 20px;
background-color: #f9f9f9;
}
.footer {
background-color: #333;
color: #fff;
text-align: center;
padding: 10px;
position: absolute;
bottom: 0;
width: 100%;
}Krok 4: Dodaj Media Queries dla Responsywności
Aby strona była responsywna, dodaj media queries, aby dostosować układ na mniejszych ekranach.
@media (max-width: 768px) {
.main {
flex-direction: column;
}
.content, .sidebar {
min-width: 100%;
margin-bottom: 20px;
}
.footer {
position: static;
}
}Krok 5: Finalizacja
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>Moja Strona WWW</title>
</head>
<body>
<header class="header">
<h1>Moja Strona WWW</h1>
<nav class="nav">
<ul>
<li><a href="#">Strona główna</a></li>
<li><a href="#">O nas</a></li>
<li><a href="#">Usługi</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
</nav>
</header>
<main class="main">
<section class="content">
<h2>Witamy na naszej stronie</h2>
<p>To jest przykładowy tekst w głównej sekcji strony. Możesz tu dodać więcej informacji o swojej firmie, produktach lub usługach.</p>
</section>
<aside class="sidebar">
<h2>Aktualności</h2>
<p>Najświeższe informacje o naszej firmie i branży.</p>
</aside>
</main>
<footer class="footer">
<p>© 2023 Moja Strona WWW. Wszelkie prawa zastrzeżone.</p>
</footer>
</body>
</html>Plik CSS (styles.css)
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
.header {
background-color: #333;
color: #fff;
padding: 20px;
text-align: center;
}
.nav ul {
list-style-type: none;
padding: 0;
display: flex;
justify-content: center;
}
.nav li {
margin: 0 15px;
}
.nav a {
color: #fff;
text-decoration: none;
font-weight: bold;
}
.main {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 20px;
background-color: #fff;
}
.content {
flex: 1;
min-width: 60%;
padding: 20px;
}
.sidebar {
flex: 1;
min-width: 30%;
padding: 20px;
background-color: #f9f9f9;
}
.footer {
background-color: #333;
color: #fff;
text-align: center;
padding: 10px;
position: absolute;
bottom: 0;
width: 100%;
}
@media (max-width: 768px) {
.main {
flex-direction: column;
}
.content, .sidebar {
min-width: 100%;
margin-bottom: 20px;
}
.footer {
position: static;
}
}Zadanie dodatkowe
- Dodaj więcej sekcji do głównej treści, takie jak dodatkowe artykuły lub galerie obrazów.
- Przetestuj swoje umiejętności, dodając więcej elementów do nawigacji i dostosowując je do mniejszych ekranów.
- Dodaj różne style do swojej strony, np. zmieniając kolory, rozmiary czcionek i inne właściwości elementów, aby lepiej zrozumieć, jak działają różne opcje CSS.
- Dodaj animacje do nawigacji i innych elementów strony, aby dodać interaktywność i lepsze doświadczenie użytkownika.
Podsumowanie modułu Flexbox
W tym module poznałeś kompletny zestaw narzędzi Flexbox:
display: flex- aktywacja Flexboxa na kontenerzeflex-direction- kierunek osi głównej (row, column, row-reverse, column-reverse)justify-content- rozmieszczanie na osi głównejalign-items- wyrównywanie na osi poprzecznejflex-wrap- zawijanie elementów do nowych liniigap- odstępy między elementamiflex-grow,flex-shrink,flex-basis- kontrola rozmiaru elementóworder- zmiana kolejności wizualnejalign-self- indywidualne wyrównanie elementu
Flexbox to potężne narzędzie, które pozwala tworzyć elastyczne layouty bez konieczności używania float, position czy skomplikowanych hacków. Jak mawiają architekci piramid: "Elastyczność w planowaniu to klucz do trwałej konstrukcji!"
Stwórz swoją stronę w edytorze poniżej:
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 - Align Self</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Align Self - Indywidualne wyrównanie</h1>
<p class="subtitle">Nadpisz align-items dla pojedynczych elementów</p>
<section class="demo-section">
<h2>Jeden element wyrównany inaczej</h2>
<div class="flex-container">
<div class="flex-item">Normal</div>
<div class="flex-item self-start">align-self: flex-start</div>
<div class="flex-item">Normal</div>
</div>
<p class="description">Środkowy element wyrównany do góry niezależnie od reszty</p>
</section>
<section class="demo-section">
<h2>Wszystkie właściwości align-self</h2>
<div class="flex-container tall">
<div class="flex-item self-auto">auto (dziedziczy)</div>
<div class="flex-item self-start">flex-start</div>
<div class="flex-item self-center">center</div>
<div class="flex-item self-end">flex-end</div>
<div class="flex-item self-stretch">stretch</div>
<div class="flex-item self-baseline">baseline</div>
</div>
<p class="description">Każdy element z innym wyrównaniem</p>
</section>
<section class="demo-section practice">
<h2>Praktyka: Egipska procesja</h2>
<p class="practice-description">Faraon i jego poddani w procesji - każdy na swoim poziomie</p>
<div class="procession">
<div class="person peasant">
<div class="figure">◉</div>
<div class="label">Chłop</div>
</div>
<div class="person scribe">
<div class="figure">◉</div>
<div class="label">Skryba</div>
</div>
<div class="person pharaoh">
<div class="figure">◉</div>
<div class="label">Faraon</div>
</div>
<div class="person priest">
<div class="figure">◉</div>
<div class="label">Kapłan</div>
</div>
<div class="person warrior">
<div class="figure">◉</div>
<div class="label">Wojownik</div>
</div>
<div class="person servant">
<div class="figure">◉</div>
<div class="label">Sługa</div>
</div>
</div>
<div class="legend">
<h3>Hierarchia społeczna:</h3>
<ul>
<li><span class="status pharaoh-status">Faraon</span> - najwyższy (flex-end)</li>
<li><span class="status priest-status">Kapłan</span> - wysoki (center-high)</li>
<li><span class="status scribe-status">Skryba</span> - średni (center)</li>
<li><span class="status warrior-status">Wojownik</span> - średni-niski (center-low)</li>
<li><span class="status peasant-status">Chłop</span> - niski (flex-start)</li>
<li><span class="status servant-status">Sługa</span> - najniższy (stretch)</li>
</ul>
</div>
</section>
</div>
</body>
</html>Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?