Nowoczesna Wizytówka Online
Zadanie 100: Nowoczesna Wizytówka Online (Card UI)
Wstęp
Wizytówka to klasyk. Ale w wersji cyfrowej może mieć hover efekty, własne fonty i chmurę tagów. W tym zadaniu stworzysz "Kartę Profilową" - jeden z najczęstszych elementów interfejsu (UI) w internecie. Nauczysz się świętego Graala CSS: idealnego centrowania za pomocą Flexboxa.
Część 1: Struktura i Narzędzia
Zadanie 1: Organizacja Plików
Stwórz folder moj-projekt. W środku:
index.html- folder
css, a w nimstyle.css - folder
img(pobierz jakieś zdjęcie profilowe, np. zunsplash.comlubthispersondoesnotexist.comi nazwij jeprofil.jpg).
Zadanie 2: Szkielet HTML5
W index.html wygeneruj strukturę !.
- Ustaw język:
<html lang="pl">. - Dodaj w
<head>meta tag viewport (kluczowy dla telefonów):<meta name="viewport" content="width=device-width, initial-scale=1.0">
Zadanie 3: Import Fontów (Google Fonts)
Standardowe czcionki (Arial, Times) są nudne.
- Wejdź na fonts.google.com.
- Wyszukaj np. "Poppins" lub "Montserrat".
- Wybierz style (np. Regular 400, Bold 700).
- Skopiuj link
<link href="...">i wklej go do sekcji<head>w swoim HTML.
Zadanie 4: Podpięcie CSS
Połącz pliki.
<link rel="stylesheet" href="css/style.css">
Zadanie 5: Semantyczna Struktura
Wewnątrz <body> zbuduj układ:
<main class="container">
<div class="card">
<img src="img/profil.jpg" alt="Zdjęcie profilowe">
<div class="card-content">
<h1>Twoje Imię</h1>
<p>Junior Web Developer</p>
<div class="social-links">
<a href="#" class="btn">GitHub</a>
<a href="#" class="btn">LinkedIn</a>
</div>
</div>
</div>
</main>
[!IMPORTANT] Commit 1: Struktura HTML i pliki.
Część 2: CSS Layout (Flexbox)
Zadanie 6: Reset CSS
W style.css zacznij od resetu, by przeglądarki nie dodawały swoich marginesów.
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
Zadanie 7: Tło i Font
Ustaw style dla body. To tutaj zdefiniujemy font dla całej strony.
body {
font-family: 'Poppins', sans-serif; /* wstaw nazwę swojego fontu */
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh; /* Pełna wysokość ekranu */
}
Zadanie 8: Centrowanie (Magia Flexboxa)
To najważniejszy moment. Wyśrodkuj kartę idealnie na środku ekranu.
.container {
display: flex;
justify-content: center; /* Poziomo */
align-items: center; /* Pionowo */
min-height: 100vh; /* Musi mieć wysokość ekranu, żeby było co centrować */
}
Zadanie 9: Wygląd Karty
Stylujemy biały prostokąt.
.card {
background: white;
width: 350px;
border-radius: 20px;
box-shadow: 0 10px 25px rgba(0,0,0, 0.2); /* Cień nadaje głębi */
overflow: hidden; /* Żeby zdjęcie nie wystawało poza zaokrąglenie */
text-align: center; /* Wyśrodkowanie tekstu wewnątrz */
}
Zadanie 10: Padding
Dodaj oddech wewnątrz karty.
.card-content {
padding: 20px;
}
[!IMPORTANT] Commit 2: Layout i karta.
Część 3: Detale i Grafika
Zadanie 11: Okrągłe Zdjęcie
Zróbmy z kwadratowego zdjęcia kółko.
.card img {
width: 120px;
height: 120px;
border-radius: 50%;
object-fit: cover; /* Żeby nie spłaszczyło twarzy */
margin-top: 20px;
border: 5px solid white; /* Opcjonalna ramka */
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
}
Zadanie 12: Nagłówek
.card h1 {
font-size: 1.8rem;
margin-top: 10px;
color: #333;
}
Zadanie 13: Opis
.card p {
color: #666;
margin-bottom: 20px;
font-size: 0.9rem;
}
Zadanie 14: Przyciski (Linki jako guziki)
Linki domyślnie są podkreślone i niebieskie. Zmieńmy to.
.btn {
text-decoration: none;
display: inline-block;
padding: 10px 20px;
margin: 5px;
background-color: #333;
color: white;
border-radius: 50px; /* "Pill shape" */
font-weight: bold;
transition: 0.3s; /* Płynna animacja */
}
Zadanie 15: Kolory przycisków
Możesz nadać im różne kolory, np. GitHub czarny, LinkedIn niebieski (używając dodatkowych klas lub nth-child), ale na start wystarczy jeden spójny styl.
[!IMPORTANT] Commit 3: Stylowanie detali.
Część 4: Interakcja i Responsywność
Zadanie 16: Hover Effect (Unoszenie)
Niech przycisk reaguje na najechanie myszką.
.btn:hover {
background-color: #555;
transform: translateY(-3px); /* Unieś o 3 piksele */
}
Zadanie 17: Responsywność (Media Query)
Na bardzo małych telefonach (poniżej 400px szerokości) karta może być za szeroka.
@media (max-width: 400px) {
.card {
width: 90%; /* Zamiast 350px, zajmij 90% ekranu */
}
}
Zadanie 18: Weryfikacja HTML
Otwórz stronę w przeglądarce. Zmień rozmiar okna. Sprawdź, czy wszystko jest czytelne.
Zadanie 19: Sprzątanie kodu
Upewnij się, że wcięcia są poprawne, a w CSS nie ma zbędnych powtórzeń.
Zadanie 20: Publikacja (Opcjonalnie)
Taki plik możesz wrzucić na GitHub Pages, jako swoje pierwsze portfolio!
[!IMPORTANT] Commit 4: Efekty i RWD.
Git Help
git add .
git commit -m "HTML Zadanie 100: Wizytowka"