Kurs HTML i CSS · Moduł 5: Responsywność
Responsywne jednostki vw, vh + relatywne
W tej lekcji8
W poprzednich wizjach można było zobaczyć temat jednostek. Temat responsywności to dobre miejsce, żeby wyjaśnić sobie wszystkie rodzaje jednostek:
Jednostki bezwzględne - są to wartości, które nie są relatywnie uzależnione od wcześniej zdeklarowanych wartości dla innych elementów.
- cm - centimeters
- mm - millimeters
- px - pixels (1px = 1/96th of 1in)
Jednostki względne - określają wartość względem innej wartości. Względne jednostki skalują się lepiej dla urządzeń responsywnych.
em - relatywna do wartości font-size elementu (2em oznacza 2 razy rozmiar obecnego elementu) rem - relatywna do elementu głównego - najczęściej jest to element html vw - 1vh to 1% obecnej szerokości urządzenia vh - 1vh to 1% obecnej wysokości urządzenia % - relatywne do elementu rodzica
Jednostki Viewportu (vw, vh)
Jednostki vw (viewport width) i vh (viewport height) to jednostki, które są równoznaczne z procentem szerokości lub wysokości okna przeglądarki.
vw - Viewport Width
1vw odpowiada 1% szerokości okna przeglądarki.
1h1 {
2 font-size: 5vw; /* Rozmiar czcionki dostosowuje się do 5% szerokości okna przeglądarki */
3}vh - Viewport Height
1vh odpowiada 1% wysokości okna przeglądarki.
1.section {
2 height: 50vh; /* Wysokość sekcji dostosowuje się do 50% wysokości okna przeglądarki */
3}Relatywne Jednostki (em, rem)
Relatywne jednostki, takie jak em i rem, pozwalają na skalowanie elementów w stosunku do rozmiaru czcionki.
em
Jednostka em jest relatywna względem rozmiaru czcionki elementu nadrzędnego.
1p {
2 font-size: 16px;
3}
4
5p span {
6 font-size: 1.5em; /* 1.5 * 16px = 24px */
7}rem
Jednostka rem jest relatywna względem rozmiaru czcionki elementu głównego (root), czyli zwykle elementu <html>.
1html {
2 font-size: 16px;
3}
4
5h1 {
6 font-size: 2rem; /* 2 * 16px = 32px */
7}Praktyczne Zastosowania
- Skalowanie Tekstu: vw i rem są użyteczne do skalowania rozmiaru tekstu w zależności od rozmiaru okna przeglądarki lub rozmiaru bazowego.
- Stworzenie Responsywnych Layoutów: vh i vw mogą być wykorzystane do tworzenia layoutów, które idealnie dopasowują się do różnych rozmiarów ekranu.
- Modularny Design: Relatywne jednostki takie jak em i rem umożliwiają tworzenie bardziej modularnego i elastycznego kodu CSS, który łatwo się dostosowuje i utrzymuje.
Zadanie: Responsywny Layout za pomocą jednostek vw, vh, em, i rem
Twoim zadaniem jest stworzenie strony internetowej z responsywnym layoutem, wykorzystując jednostki vw, vh, em i rem. Strona powinna składać się z nagłówka, sekcji głównej z dwoma kolumnami oraz stopki.
Krok 1: Stwórz podstawową strukturę dokumentu HTML
Utwórz nowy plik HTML i dodaj podstawową strukturę dokumentu HTML. Dodaj nagłówek, sekcję główną z dwoma kolumnami oraz stopkę.
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>Responsywny Layout</title>
8</head>
9<body>
10 <header class="header">
11 <h1>Responsywny Nagłówek</h1>
12 </header>
13 <main class="main">
14 <section class="section">
15 <div class="column">
16 <h2>Kolumna 1</h2>
17 <p>To jest przykładowy paragraf tekstu w kolumnie 1.</p>
18 </div>
19 <div class="column">
20 <h2>Kolumna 2</h2>
21 <p>To jest przykładowy paragraf tekstu w kolumnie 2.</p>
22 </div>
23 </section>
24 </main>
25 <footer class="footer">
26 <p>© 2023 Responsywny Layout. Wszelkie prawa zastrzeżone.</p>
27 </footer>
28</body>
29</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, .main, .section, .column i .footer. Użyj jednostek vw, vh, em i rem, aby stworzyć responsywny układ.
1body {
2 font-family: Arial, sans-serif;
3 margin: 0;
4 padding: 0;
5 background-color: #f0f0f0;
6}
7
8.header {
9 background-color: #333;
10 color: #fff;
11 padding: 2vh 0;
12 text-align: center;
13}
14
15.main {
16 padding: 2vw;
17}
18
19.section {
20 display: flex;
21 justify-content: space-between;
22}
23
24.column {
25 width: 48%;
26 background-color: #fff;
27 padding: 2em;
28 border-radius: 1rem;
29 box-shadow: 0 0 10px rgba(0,0,0,0.1);
30}
31
32.column h2 {
33 font-size: 2rem;
34 margin-bottom: 1em;
35}
36
37.column p {
38 font-size: 1.2rem;
39}
40
41.footer {
42 background-color: #333;
43 color: #fff;
44 text-align: center;
45 padding: 1vh 0;
46}Krok 4: Dodaj Media Queries dla Responsywności
Aby layout był jeszcze bardziej responsywny, dodaj media queries, aby dostosować układ na mniejszych ekranach.
1@media (max-width: 768px) {
2 .section {
3 flex-direction: column;
4 }
5
6 .column {
7 width: 100%;
8 margin-bottom: 2vh;
9 }
10
11 .column:last-child {
12 margin-bottom: 0;
13 }
14}
15
16@media (max-width: 480px) {
17 .header {
18 padding: 3vh 0;
19 }
20
21 .column {
22 padding: 1em;
23 }
24
25 .column h2 {
26 font-size: 1.5rem;
27 }
28
29 .column p {
30 font-size: 1rem;
31 }
32}Zadanie dodatkowe
- Dodaj więcej sekcji do strony i eksperymentuj z różnymi wartościami
vw,vh,em, irem, aby zobaczyć, jak zmienia się układ. - Przetestuj swoje umiejętności, dodając inne elementy, takie jak obrazki, przyciski, czy formularze i zobacz, jak różne jednostki wpływają na ich responsywność.
- Dodaj różne style do swojej strony, np. zmieniając kolory, marginesy, czy inne właściwości elementów, aby lepiej zrozumieć, jak działają różne opcje CSS.
- Dodaj animacje do elementów, aby dodać interaktywność i lepsze doświadczenie użytkownika.
Podsumowanie
Zrozumienie i stosowanie różnych jednostek w CSS jest kluczowe dla tworzenia responsywnych i elastycznych layoutów. Eksperymentuj z różnymi jednostkami i stylami, aby lepiej zrozumieć, jak działają i jak można je wykorzystać do tworzenia pięknych, responsywnych stron internetowych.
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Co oznacza jednostka 1vh w CSS?
2. Która jednostka CSS jest relatywna do rozmiaru czcionki elementu root (html)?
To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Edytor kodu
Stwórz responsywną galerię egipską. HTML: <div class='gallery'> + 4 <img src='https://via.placeholder.com/800x600?text=Piramida' alt='Piramida'> + </div>. CSS: .gallery {display: flex; flex-wrap: wrap; gap: 20px; padding: 20px;} .gallery img {max-width: 100%; height: auto; border: 5px solid #FFD700; box-shadow: 0 4px 10px rgba(0,0,0,0.3);}. Potem @media (min-width: 768px) {.gallery img {width: calc(50% - 10px);}}. Desktop @media (min-width: 1024px) {.gallery img {width: calc(25% - 15px); object-fit: cover; height: 200px;}}. Obserwuj jak obrazy się dostosowują!
- Układanie w pionie
Ułóż jednostki CSS od najmniej do najbardziej elastycznej responsywnie:
- Edytor kodu
Stwórz sekcję hero używając 100vh wysokości i tekst z vw jednostkami.
- Edytor kodu
Stwórz responsywną typografię używając rem/em i media queries dla różnych rozmiarów.