Верстка лендінгу з Figma
У ДЗ #7 ти вже верстав картки за макетом — і знаєш, як діставати з Figma кольори, шрифти та відступи. Тепер піднімаємо планку: цілий лендінг від шапки до футера, як у реальній роботі, де фронтенд-розробник отримує макет від дизайнера і перетворює його на код.
Твоє завдання — зверстати фітнес-лендінг treine.me за готовим макетом у Figma.
Макет у Figma: Layout to study HTML & CSS (Community)
Гайд «Як дістати значення з Figma/Penpot» ти вже знаєш з ДЗ #7 — Inspect-панель, копіювання HEX-кольорів, Alt-наведення для відстаней, експорт зображень. Тут усе так само.
Специфічне для цього макету: ілюстрацію з hero-секції експортуй як PNG (виділи елемент → Export). Якщо не вдається — не хвилюйся, використай placeholder-ілюстрацію з unDraw або простий CSS-блок замість картинки.
Завдання
Файлова структура
hw-08/
├── index.html
├── style.css
└── images/
└── hero-illustration.png ← експорт з Figma або placeholder
Структура сторінки
┌──────────────────── header ─────────────────────┐
│ treine.me Home About Training│
├─────────────────────────────────────────────────┤
│ hero section │
│ ┌─── text ────────────┐ ┌─── image ──────────┐ │
│ │ WORKOUTS MADE │ │ │ │
│ │ EXCLUSIVE FOR YOU! │ │ [illustration] │ │
│ │ │ │ │ │
│ │ We create exclusive │ │ │ │
│ │ and unique workouts │ │ │ │
│ │ │ │ │ │
│ │ [🟢 Start now] │ │ │ │
│ └─────────────────────┘ └─────────────────────┘ │
├──────────────────── footer ─────────────────────┤
│ send us a message @treine.me │
└─────────────────────────────────────────────────┘
Вимоги
1. Семантичний HTML
- Використовуй теги
<header>,<main>,<section>,<footer> <nav>для навігації з посиланнями- Заголовок у
<h1>, опис у<p>
2. Header (Flexbox)
- Логотип "treine.me" зліва, навігація справа
display: flexзjustify-content: space-betweenтаalign-items: center- Навігаційні посилання через
<ul>+display: flex+gap - Активний пункт ("Home") виділений жирним шрифтом
3. Hero-секція (Flexbox — головна частина)
- Два блоки поруч: текстовий контент зліва, ілюстрація справа
display: flexна секції, кожен блок займає приблизно половину ширини- Текстовий блок:
display: flex+flex-direction: columnдля вертикального розташування заголовка, опису та кнопки - Вертикальне центрування контенту через
justify-content: center
4. Заголовок із акцентом
- Текст: "WORKOUTS MADE EXCLUSIVE FOR YOU!"
- Слово "EXCLUSIVE" виділене кольором акценту (бірюзовий/зелений з макету)
- Загорни це слово у
<span>з окремим класом
5. CTA-кнопка
- Зелена кнопка "Start now" з іконкою (WhatsApp або телефон)
display: inline-flex+align-items: center+gapдля іконки та тексту- Округлені кути (
border-radius), padding, колір тексту білий
6. Кольори та типографіка
- Витягни кольори з Figma і збережи їх у CSS-змінних:
:root { --color-primary: /* твій колір з макету */; --color-text: /* темний текст */; --color-text-light: /* світліший текст опису */; --color-bg: #FFFFFF; } - Підключи шрифт з Google Fonts (перевір який шрифт у Figma)
- Дотримуйся розмірів тексту з макету (
font-size,font-weight)
7. Відступи та розміри
- Контейнер з
max-width: 1280pxтаmargin: 0 auto - Відступи (
padding) витягни з Figma через Inspect або Alt-наведення - Використовуй
remдля розмірів
Бонусні завдання
Декоративні елементи (+10 балів)
- Патерн з точок на фоні (як у правому нижньому куті макету)
- Геометричні фігури (кола, прямокутники) через
::before/::afterзposition: absolute
Hover-ефекти (+10 балів)
- Навігаційні посилання: зміна кольору з
transition - CTA-кнопка: зміна
background-colorабоtransform: scale(1.05)на hover - Плавні переходи через
transition: all 0.3s ease
Responsive (+10 балів)
- На мобільних (до 768px): hero-секція стає вертикальною (текст зверху, картинка знизу)
flex-direction: columnв media query- Заголовок зменшується, кнопка на всю ширину
Підказки
- Для двох колонок у hero:
display: flexна батьківському елементі, кожен дочірній —flex: 1 - Для кольорового слова:
<span class="accent">EXCLUSIVE</span>+.accent { color: var(--color-primary); } - Для кнопки з іконкою:
display: inline-flex; align-items: center; gap: 8px; - Для іконки WhatsApp: Unicode-символ
☎або SVG-іконка - Для контейнера:
.container { max-width: 1280px; margin: 0 auto; padding: 0 40px; }
Підказка до бонусу: як зробити патерн з точок (відкривай, якщо застряг)
Патерн точок можна намалювати без жодної картинки — самим CSS-градієнтом:
background-image: radial-gradient(circle, rgba(0, 0, 0, 0.1) 1px, transparent 1px);
background-size: 20px 20px;radial-gradient малює одну точку, а background-size повторює її сіткою кожні 20px.
Як здати
- Робота — в публічному GitHub-репозиторії курсу
my-web-course, у папціhw-08/ - У папці ДЗ —
README.md: 2-3 речення що зроблено + як відкрити - Мінімум 3 коміти з осмисленими повідомленнями (не "fix"/"update")
- Обов'язково скріншоти в
hw-08/screenshots/:desktop.png— повна сторінка на ширині ~1440pxmobile.png— на ширині ~390px (навіть без responsive-бонусу — покажи, як лендінг виглядає на мобільному)
- Надішли посилання на репозиторій (можна одразу на папку
hw-08)
Критерії оцінки
| Критерій | Тип | Бали |
|---|---|---|
| Семантичний HTML (header, main, section, footer, nav) | [код] | 10 |
| Flexbox header (логотип + навігація, space-between) | [код] | 15 |
| Flexbox hero-секція (два блоки поруч) | [код] | 20 |
| Кольори та шрифти з Figma (CSS-змінні, Google Fonts) | [код] | 15 |
| CTA-кнопка з іконкою (inline-flex, стилізація) | [код] | 10 |
| Відступи та розміри близькі до макету: дві колонки hero приблизно порівну, контент по центру сторінки, пропорції як у дизайні — звір зі скріншотом макета | [скрін] | 15 |
Скріншоти desktop.png та mobile.png додано | [скрін] | 5 |
| Якість коду | [код] | 10 |
| Разом | 100 | |
| Бонус: Декоративні елементи (точки, фігури через CSS) | [код] | +10 |
| Бонус: Hover-ефекти з transitions | [код] | +10 |
| Бонус: Responsive (mobile-friendly hero) | [скрін] | +10 |