# Проект "Террариум", часть 1: Введение в HTML ```mermaid journey title Your HTML Learning Journey section Foundation Create HTML file: 3: Student Add DOCTYPE: 4: Student Structure document: 5: Student section Content Add metadata: 4: Student Include images: 5: Student Organize layout: 5: Student section Semantics Use proper tags: 4: Student Enhance accessibility: 5: Student Build terrarium: 5: Student ``` ![Введение в HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.ru.png) > Скетчноут от [Tomomi Imura](https://twitter.com/girlie_mac) HTML, или язык гипертекстовой разметки, является основой каждого веб-сайта, который вы когда-либо посещали. Представьте HTML как скелет, который придает структуру веб-страницам – он определяет, где размещается контент, как он организован и что представляет собой каждый элемент. В то время как CSS позже "оденет" ваш HTML в цвета и макеты, а JavaScript оживит его с помощью интерактивности, HTML обеспечивает основную структуру, которая делает все остальное возможным. В этом уроке вы создадите HTML-структуру для интерфейса виртуального террариума. Этот практический проект научит вас основным концепциям HTML, одновременно создавая что-то визуально привлекательное. Вы узнаете, как организовывать контент с помощью семантических элементов, работать с изображениями и создавать основу для интерактивного веб-приложения. К концу урока у вас будет рабочая HTML-страница, отображающая изображения растений в организованных колонках, готовая к стилизации в следующем уроке. Не переживайте, если сначала она будет выглядеть просто – именно так должен выглядеть HTML до того, как CSS добавит визуальный блеск. ```mermaid mindmap root((HTML Fundamentals)) Structure DOCTYPE Declaration HTML Element Head Section Body Content Elements Tags & Attributes Self-closing Tags Nested Elements Block vs Inline Content Text Elements Images Containers (div) Lists Semantics Meaningful Tags Accessibility Screen Readers SEO Benefits Best Practices Proper Nesting Valid Markup Descriptive Alt Text Organized Structure ``` ## Тест перед лекцией [Тест перед лекцией](https://ff-quizzes.netlify.app/web/quiz/15) > 📺 **Смотрите и учитесь**: Ознакомьтесь с полезным видеообзором > > [![Видео о основах HTML](https://img.youtube.com/vi/1TvxJKBzhyQ/0.jpg)](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` ![Панель Explorer в VS Code, показывающая создание нового файла](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.ru.png) **Вариант 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-документ следует определенной структуре, которую браузеры должны понимать и правильно отображать. Представьте эту структуру как официальное письмо – оно имеет обязательные элементы в определенном порядке, которые помогают получателю (в данном случае браузеру) правильно обработать содержимое. ```mermaid flowchart TD A[""] --> B[""] B --> C[""] C --> D[""] C --> E["<meta charset>"] C --> F["<meta viewport>"] B --> G["<body>"] G --> H["<h1> Heading"] G --> I["<div> Containers"] G --> J["<img> Images"] style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style G fill:#e8f5e8 ``` Давайте начнем с добавления необходимой основы, которая требуется каждому HTML-документу. ### Декларация DOCTYPE и корневой элемент Первые две строки любого HTML-файла служат "введением" документа для браузера: ```html <!DOCTYPE html> <html></html> ``` **Что делает этот код:** - **Объявляет** тип документа как HTML5 с помощью `<!DOCTYPE html>` - **Создает** корневой элемент `<html>`, который будет содержать весь контент страницы - **Устанавливает** современные веб-стандарты для правильного отображения браузером - **Обеспечивает** единообразное отображение в разных браузерах и на разных устройствах > 💡 **Совет для VS Code**: Наведите курсор на любой HTML-тег в VS Code, чтобы увидеть полезную информацию из MDN Web Docs, включая примеры использования и сведения о совместимости с браузерами. > 📚 **Узнайте больше**: Декларация DOCTYPE предотвращает переход браузеров в "режим совместимости", который использовался для поддержки очень старых веб-сайтов. Современная веб-разработка использует простую декларацию `<!DOCTYPE html>`, чтобы обеспечить [отображение в соответствии со стандартами](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). ### 🔄 **Педагогическая проверка** **Пауза и размышления**: Прежде чем продолжить, убедитесь, что вы понимаете: - ✅ Почему каждый HTML-документ нуждается в декларации DOCTYPE - ✅ Что содержит корневой элемент `<html>` - ✅ Как эта структура помогает браузерам правильно отображать страницы **Краткий тест для самопроверки**: Можете ли вы объяснить своими словами, что означает "отображение в соответствии со стандартами"? ## Добавление важной метаинформации документа Секция `<head>` HTML-документа содержит важную информацию, которая нужна браузерам и поисковым системам, но которую посетители не видят непосредственно на странице. Это своего рода "закулисная" информация, которая помогает вашей веб-странице работать правильно и отображаться корректно на разных устройствах и платформах. Эти метаданные сообщают браузерам, как отображать вашу страницу, какую кодировку символов использовать и как обрабатывать разные размеры экрана – все это важно для создания профессиональных и доступных веб-страниц. ### Задание: Добавьте секцию `<head>` документа Вставьте эту секцию `<head>` между открывающим и закрывающим тегами `<html>`: ```html <head> <title>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
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
``` **Пошагово, что происходит в этом коде:** - **Создается** основной контейнер страницы с `id="page"`, чтобы содержать весь контент - **Устанавливаются** два контейнера для колонок: `left-container` и `right-container` - **Организуются** 7 растений в левую колонку и 7 растений в правую колонку - **Обрамляются** каждое изображение растения в div `plant-holder` для индивидуального позиционирования - **Применяются** согласованные имена классов для стилизации с помощью CSS в следующем уроке - **Назначаются** уникальные идентификаторы каждому изображению растения для последующего взаимодействия с JavaScript - **Указываются** правильные пути к файлам в папке изображений > 🤔 **Подумайте об этом**: Обратите внимание, что все изображения в настоящее время имеют одинаковый текст alt "plant". Это не идеально для доступности. Пользователи экранных читалок будут слышать "plant" 14 раз подряд, не понимая, какое конкретное растение показывает каждое изображение. Можете ли вы придумать более точный и описательный текст alt для каждого изображения? > 📝 **Типы HTML-элементов**: Элементы `
` являются "блочными" и занимают всю ширину, тогда как элементы `` являются "встроенными" и занимают только необходимую ширину. Как вы думаете, что произойдет, если заменить все эти теги `
` на теги ``? ### 🔄 **Педагогическая проверка** **Понимание структуры**: Найдите минутку, чтобы пересмотреть вашу HTML-структуру: - ✅ Можете ли вы определить основные контейнеры в вашем макете? - ✅ Понимаете ли вы, почему у каждого изображения есть уникальный идентификатор? - ✅ Как бы вы описали назначение div `plant-holder`? **Визуальная проверка**: Откройте ваш HTML-файл в браузере. Вы должны увидеть: - Базовый список изображений растений - Изображения, организованные в два столбца - Простой, не стилизованный макет **Помните**: Этот простой вид – именно то, как должен выглядеть HTML до стилизации с помощью CSS! С добавленной разметкой растения появятся на экране, хотя пока они не будут выглядеть изящно – для этого предназначен CSS в следующем уроке! На данный момент у вас есть надежная HTML-основа, которая правильно организует ваш контент и следует лучшим практикам доступности. ## Использование семантического HTML для доступности Семантический HTML означает выбор HTML-элементов на основе их значения и назначения, а не только их внешнего вида. Используя семантическую разметку, вы передаете структуру и смысл вашего контента браузерам, поисковым системам и вспомогательным технологиям, таким как экранные читалки. ```mermaid flowchart TD A[Need to add content?] --> B{What type?} B -->|Main heading| C["

"] B -->|Subheading| D["

,

, etc."] B -->|Paragraph| E["

"] B -->|List| F["

    ,
      "] B -->|Navigation| G["