Вивчай
Домашнє завдання #8 · Flexbox-верстка лендінгу за макетом
100 балів+30 бонусintermediate

Верстка лендінгу з 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-символ &#9742; або 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.


Як здати

  1. Робота — в публічному GitHub-репозиторії курсу my-web-course, у папці hw-08/
  2. У папці ДЗ — README.md: 2-3 речення що зроблено + як відкрити
  3. Мінімум 3 коміти з осмисленими повідомленнями (не "fix"/"update")
  4. Обов'язково скріншоти в hw-08/screenshots/:
    • desktop.png — повна сторінка на ширині ~1440px
    • mobile.png — на ширині ~390px (навіть без responsive-бонусу — покажи, як лендінг виглядає на мобільному)
  5. Надішли посилання на репозиторій (можна одразу на папку 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