# Проєкт "Тераріум" Частина 1: Вступ до HTML

> Скетчнот від [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, або Мова Розмітки Гіпертексту, є основою кожного вебсайту, який ви коли-небудь відвідували. Уявіть HTML як скелет, який надає структуру вебсторінкам – він визначає, де розміщується контент, як він організований і що кожен елемент представляє. Хоча CSS пізніше "одягне" ваш HTML кольорами та макетами, а JavaScript оживить його інтерактивністю, HTML забезпечує основну структуру, яка робить усе інше можливим.
У цьому уроці ви створите HTML-структуру для інтерфейсу віртуального тераріуму. Цей практичний проєкт навчить вас основам HTML, одночасно створюючи щось візуально привабливе. Ви навчитеся організовувати контент за допомогою семантичних елементів, працювати з зображеннями та створювати основу для інтерактивного вебдодатку.
До кінця цього уроку у вас буде готова HTML-сторінка, яка відображає зображення рослин у впорядкованих колонках, готова до стилізації в наступному уроці. Не хвилюйтеся, якщо спочатку вона виглядає просто – саме так має виглядати HTML перед тим, як CSS додасть візуальний блиск.
## Тест перед лекцією
[Тест перед лекцією](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **Дивіться та навчайтеся**: Перегляньте корисне відео-огляд
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Налаштування вашого проєкту
Перед тим як зануритися в код HTML, давайте налаштуємо правильне робоче середовище для вашого проєкту тераріуму. Створення організованої файлової структури з самого початку – це важлива звичка, яка буде корисною протягом вашого шляху веброзробки.
### Завдання: Створіть структуру проєкту
Ви створите спеціальну папку для вашого проєкту тераріуму та додасте ваш перший HTML-файл. Ось два підходи, які ви можете використовувати:
**Варіант 1: Використання Visual Studio Code**
1. Відкрийте Visual Studio Code
2. Натисніть "File" → "Open Folder" або використовуйте `Ctrl+K, Ctrl+O` (Windows/Linux) або `Cmd+K, Cmd+O` (Mac)
3. Створіть нову папку під назвою `terrarium` і виберіть її
4. У панелі Explorer натисніть на іконку "New File"
5. Назвіть ваш файл `index.html`

**Варіант 2: Використання команд терміналу**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Що роблять ці команди:**
- **Створюють** нову директорію під назвою `terrarium` для вашого проєкту
- **Переходять** до директорії тераріуму
- **Створюють** порожній файл `index.html`
- **Відкривають** файл у Visual Studio Code для редагування
> 💡 **Порада**: Ім'я файлу `index.html` є особливим у веброзробці. Коли хтось відвідує вебсайт, браузери автоматично шукають `index.html` як сторінку за замовчуванням для відображення. Це означає, що URL, наприклад, `https://mysite.com/projects/`, автоматично відобразить файл `index.html` з папки `projects`, без необхідності вказувати ім'я файлу в URL.
## Розуміння структури HTML-документа
Кожен HTML-документ слідує певній структурі, яку браузери повинні розуміти та правильно відображати. Уявіть цю структуру як формальний лист – він має обов'язкові елементи в певному порядку, які допомагають отримувачу (у цьому випадку браузеру) правильно обробляти контент.
Давайте почнемо з додавання основи, яка потрібна кожному HTML-документу.
### Декларація DOCTYPE та кореневий елемент
Перші два рядки будь-якого HTML-файлу служать "вступом" документа для браузера:
```html
```
**Розуміння того, що робить цей код:**
- **Оголошує** тип документа як HTML5 за допомогою ``
- **Створює** кореневий елемент ``, який міститиме весь контент сторінки
- **Встановлює** сучасні вебстандарти для правильного рендерингу браузером
- **Забезпечує** послідовне відображення в різних браузерах і на різних пристроях
> 💡 **Порада для VS Code**: Наведіть курсор на будь-який HTML-тег у VS Code, щоб побачити корисну інформацію з MDN Web Docs, включаючи приклади використання та деталі сумісності з браузерами.
> 📚 **Дізнайтеся більше**: Декларація DOCTYPE запобігає переходу браузерів у "режим сумісності", який використовувався для підтримки дуже старих вебсайтів. Сучасна веброзробка використовує просту декларацію ``, щоб забезпечити [рендеринг відповідно до стандартів](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
## Додавання основних метаданих документа
Секція `
` HTML-документа містить важливу інформацію, яку потребують браузери та пошукові системи, але яку відвідувачі не бачать безпосередньо на сторінці. Уявіть це як "закулісну" інформацію, яка допомагає вашій вебсторінці працювати правильно та виглядати коректно на різних пристроях і платформах.
Ці метадані повідомляють браузерам, як відображати вашу сторінку, яке кодування символів використовувати та як обробляти різні розміри екранів – усе це необхідно для створення професійних, доступних вебсторінок.
### Завдання: Додайте заголовок документа
Вставте цю секцію `` між вашими відкриваючим та закриваючим тегами ``:
```html
Welcome to my Virtual Terrarium
```
**Розбір того, що робить кожен елемент:**
- **Встановлює** заголовок сторінки, який з'являється на вкладках браузера та в результатах пошуку
- **Вказує** кодування символів UTF-8 для правильного відображення тексту по всьому світу
- **Забезпечує** сумісність із сучасними версіями Internet Explorer
- **Налаштовує** адаптивний дизайн, встановлюючи ширину області перегляду відповідно до ширини пристрою
- **Контролює** початковий рівень масштабування для відображення контенту в природному розмірі
> 🤔 **Подумайте про це**: Що станеться, якщо ви встановите мета-тег області перегляду, наприклад, так: ``? Це змусить сторінку завжди бути шириною 600 пікселів, порушуючи адаптивний дизайн! Дізнайтеся більше про [правильну конфігурацію області перегляду](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## Створення тіла документа
Елемент `` містить увесь видимий контент вашої вебсторінки – усе, що користувачі побачать і з чим взаємодіятимуть. Хоча секція `` надавала інструкції браузеру, секція `` містить фактичний контент: текст, зображення, кнопки та інші елементи, які створюють ваш інтерфейс користувача.
Давайте додамо структуру тіла та зрозуміємо, як HTML-теги працюють разом, щоб створити змістовний контент.
### Розуміння структури HTML-тегів
HTML використовує парні теги для визначення елементів. Більшість тегів мають відкриваючий тег, наприклад `
`, і закриваючий тег, наприклад `
`, з контентом між ними: `
Привіт, світ!
`. Це створює елемент абзацу, що містить текст "Привіт, світ!".
### Завдання: Додайте елемент тіла
Оновіть ваш HTML-файл, щоб включити елемент ``:
```html
Welcome to my Virtual Terrarium
```
**Ось що забезпечує ця повна структура:**
- **Встановлює** базову структуру документа HTML5
- **Включає** основні метадані для правильного рендерингу браузером
- **Створює** порожнє тіло, готове для вашого видимого контенту
- **Слідує** сучасним найкращим практикам веброзробки
Тепер ви готові додати видимі елементи вашого тераріуму. Ми використаємо елементи `
` як контейнери для організації різних секцій контенту та елементи `` для відображення зображень рослин.
### Робота з зображеннями та контейнерами макета
Зображення є особливими в HTML, оскільки вони використовують "самозакриваючі" теги. На відміну від елементів, таких як ``, які обгортають контент, тег `` містить всю необхідну інформацію всередині самого тега, використовуючи атрибути, такі як `src` для шляху до файлу зображення та `alt` для доступності.
Перед додаванням зображень до вашого HTML вам потрібно правильно організувати файли вашого проєкту, створивши папку для зображень і додавши графіку рослин.
**Спочатку налаштуйте ваші зображення:**
1. Створіть папку під назвою `images` всередині вашої папки проєкту тераріуму
2. Завантажте зображення рослин з [папки рішення](../../../../3-terrarium/solution/images) (всього 14 зображень рослин)
3. Скопіюйте всі зображення рослин у вашу нову папку `images`
### Завдання: Створіть макет відображення рослин
Тепер додайте зображення рослин, організовані в дві колонки, між вашими тегами ``:
```html
```
**Крок за кроком, ось що відбувається в цьому коді:**
- **Створює** головний контейнер сторінки з `id="page"` для утримання всього контенту
- **Встановлює** два контейнери колонок: `left-container` і `right-container`
- **Організовує** 7 рослин у лівій колонці та 7 рослин у правій колонці
- **Обгортає** кожне зображення рослини в `plant-holder` div для індивідуального позиціонування
- **Застосовує** послідовні назви класів для стилізації CSS у наступному уроці
- **Присвоює** унікальні ID кожному зображенню рослини для взаємодії з JavaScript пізніше
- **Включає** правильні шляхи до файлів, що вказують на папку зображень
> 🤔 **Подумайте про це**: Зверніть увагу, що всі зображення наразі мають однаковий текст alt "plant". Це не ідеально для доступності. Користувачі екранних читачів чули б "plant" 14 разів, не знаючи, яку конкретну рослину показує кожне зображення. Чи можете ви придумати кращий, більш описовий текст alt для кожного зображення?
> 📝 **Типи HTML-елементів**: Елементи `
` є "блоковими" і займають всю ширину, тоді як елементи `` є "вбудованими" і займають лише необхідну ширину. Як ви думаєте, що станеться, якщо ви зміните всі ці теги `
` на теги ``?
З доданою розміткою рослини з'являться на екрані, хоча вони ще не виглядають привабливо – для цього потрібен CSS у наступному уроці! На даний момент у вас є міцна HTML-основа, яка правильно організовує ваш контент і слідує найкращим практикам доступності.
## Використання семантичного HTML для доступності
Семантичний HTML означає вибір HTML-елементів на основі їх значення та призначення, а не лише їх зовнішнього вигляду. Коли ви використовуєте семантичну розмітку, ви передаєте структуру та значення вашого контенту браузерам, пошуковим системам і допоміжним технологіям, таким як екранні читачі.
Цей підхід робить ваші вебсайти більш доступними для користувачів з обмеженими можливостями та допомагає пошуковим системам краще розуміти ваш контент. Це фундаментальний принцип сучасної веброзробки, який створює кращі враження для всіх.
### Додавання семантичного заголовка сторінки
Давайте додамо правильний заголовок до вашої сторінки тераріуму. Вставте цей рядок одразу після вашого відкриваючого тега ``:
```html
My Terrarium
```
**Чому семантична розмітка важлива:**
- **Допомагає** екранним читачам навігувати та розуміти структуру сторінки
- **Покращує** оптимізацію для пошукових систем (SEO), уточнюючи ієрархію контенту
- **Підвищує** доступність для користувачів із порушеннями зору або когнітивними відмінностями
- **Створює** кращі враження для користувачів на всіх пристроях і платформах
- **Слідує** вебстандартам і найкращим практикам для професійної розробки
**Приклади семантичних та несемантичних виборів:**
| Призначення | ✅ Семантичний вибір | ❌ Несемантичний вибір |
|-------------|---------------------|-----------------------|
| Основний заголовок | `
` |
> 🎥 **Дивіться це в дії**: Перегляньте [як екранні читачі взаємодіють із вебсторінками](https://www.youtube.com/watch?v=OUDV1gqs9GA), щоб зрозуміти, чому семантична розмітка є важливою для доступності. Зверніть увагу, як правильна структура HTML допомагає користувачам ефективно навігувати.
## Створення контейнера тераріуму
Тепер давайте додамо HTML-структуру для самого тераріуму – скляного контейнера, де рослини будуть розміщені. Цей розділ демонструє важливу концепцію: HTML забезпечує структуру, але без стилізації CSS ці елементи ще не будуть видимими.
Розмітка тераріуму використовує описові назви класів, які зроблять стилізацію CSS інтуїтивною та зручною для підтримки в наступному уроці.
### Завдання: Додайте структуру тераріуму
Вставте цю розмітку над останнім тегом `
```
**Розуміння цієї структури тераріуму:**
- **Створює** головний контейнер тераріуму з унікальним
**Підказка:** Створіть семантичний HTML розділ, який включає головний заголовок "Посібник з догляду за рослинами", три підрозділи із заголовками "Полив", "Вимоги до освітлення" та "Догляд за ґрунтом", кожен з яких містить абзац інформації про догляд за рослинами. Використовуйте відповідні семантичні HTML-теги, такі як ``, `
`, `
` та `
`, щоб належним чином структурувати контент.
Дізнайтеся більше про [режим агента](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) тут.
## Дослідження історії HTML
**Вивчення еволюції вебу**
HTML значно еволюціонував з моменту створення першого веб-браузера Тімом Бернерс-Лі в CERN у 1990 році. Деякі старі теги, такі як `