# Проект "Террариум", часть 1: Введение в HTML ![Введение в 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 добавит визуальный блеск. ## Предварительный тест [Предварительный тест](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` для вашего проекта - **Переходят** в директорию 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 использует парные теги для определения элементов. Большинство тегов имеют открывающий тег, например `

`, и закрывающий тег, например `

`, с содержимым между ними: `

Привет, мир!

`. Это создает элемент абзаца, содержащий текст "Привет, мир!". ### Задание: Добавьте элемент Body Обновите ваш 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". Это не идеально с точки зрения доступности. Пользователи экранных читалок будут слышать "растение" 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
``` **Понимание структуры террариума:** - **Создает** основной контейнер террариума с уникальным идентификатором для стилизации - **Определяет** отдельные элементы для каждого визуального компонента (верх, стены, земля, дно) - **Включает** вложенные элементы для эффектов отражения стекла (глянцевые элементы) - **Использует** описательные имена классов, которые четко указывают назначение каждого элемента - **Готовит** структуру для стилизации CSS, которая создаст внешний вид стеклянного террариума > 🤔 **Обратите внимание**: Несмотря на то, что вы добавили эту разметку, вы пока не видите ничего нового на странице! Это прекрасно иллюстрирует, как HTML предоставляет структуру, а CSS – внешний вид. Эти элементы `
` существуют, но пока не имеют визуальной стилизации – это будет сделано в следующем уроке! --- ## Задание от GitHub Copilot Agent Используйте режим Agent, чтобы выполнить следующее задание: **Описание:** Создайте семантическую HTML-структуру для раздела руководства по уходу за растениями, который можно добавить в проект террариума. **Подсказка:** Создайте семантический HTML-раздел, включающий главный заголовок "Руководство по уходу за растениями", три подраздела с заголовками "Полив", "Требования к освещению" и "Уход за почвой", каждый из которых содержит абзац информации о уходе за растениями. Используйте правильные семантические HTML-теги, такие как `
`, `

`, `

` и `

`, чтобы правильно структурировать контент. Узнайте больше о [режиме агента](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) здесь. ## Исследуйте вызов истории HTML **Изучение эволюции веба** HTML значительно эволюционировал с тех пор, как Тим Бернерс-Ли создал первый веб-браузер в CERN в 1990 году. Некоторые старые теги, такие как ``, теперь устарели, поскольку они плохо работают с современными стандартами доступности и принципами адаптивного дизайна. **Попробуйте этот эксперимент:** 1. Временно оберните ваш заголовок `

` в тег ``: `

Мой террариум

` 2. Откройте вашу страницу в браузере и наблюдайте эффект прокрутки 3. Подумайте, почему этот тег был устаревшим (подсказка: подумайте о пользовательском опыте и доступности) 4. Удалите тег `` и вернитесь к семантической разметке **Вопросы для размышления:** - Как прокручивающийся заголовок может повлиять на пользователей с нарушениями зрения или чувствительностью к движению? - Какие современные CSS-техники могут достичь аналогичных визуальных эффектов более доступным способом? - Почему важно использовать современные веб-стандарты вместо устаревших элементов? Узнайте больше о [устаревших и удаленных HTML-элементах](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements), чтобы понять, как веб-стандарты развиваются для улучшения пользовательского опыта. ## Викторина после лекции [Викторина после лекции](https://ff-quizzes.netlify.app/web/quiz/16) ## Обзор и самостоятельное изучение **Углубите свои знания HTML** HTML является основой веба уже более 30 лет, эволюционируя от простого языка разметки документов до сложной платформы для создания интерактивных приложений. Понимание этой эволюции помогает ценить современные веб-стандарты и принимать более обоснованные решения при разработке. **Рекомендуемые пути обучения:** 1. **История и эволюция HTML** - Изучите хронологию от HTML 1.0 до HTML5 - Узнайте, почему некоторые теги были устаревшими (доступность, удобство для мобильных устройств, поддерживаемость) - Исследуйте новые функции HTML и предложения 2. **Углубленное изучение семантического HTML** - Изучите полный список [семантических элементов HTML5](https://developer.mozilla.org/docs/Web/HTML/Element) - Практикуйтесь в определении, когда использовать `
`, `
`, `