Основы HTML5: создание сайта о хоккейных командах

Практический курс по основам HTML5 для начинающих. Вы научитесь создавать структуру веб-страницы, размечать текст и списки, строить таблицы со статистикой, добавлять изображения и ссылки. В финале соберёте полноценную страницу о городских хоккейных командах.

1. Основы структуры HTML5-документа

Основы структуры HTML5-документа

Представьте, что вы пришли в арену перед матчем и видите пустой лёд, трибуны, табло, раздевалки — всё это каркас, на котором строится игра. HTML-документ — это точно такой же каркас, только для веб-страницы. Без него браузер не поймёт, что показывать пользователю. Сегодня вы узнаете, как устроен этот каркас, и напишете свой первый HTML-файл с нуля.

Базовый шаблон HTML5

Каждый HTML-документ начинается с декларации типа документа<!DOCTYPE html>. Она сообщает браузеру: «Эта страница написана на HTML5, используй современные стандарты». Без неё браузер может перейти в режим совместимости и отобразить страницу некорректно.

Вот минимальный рабочий шаблон:

Разберём каждый элемент по порядку.

Тег <html> — корневой элемент

Тег <html> оборачивает всё содержимое страницы. Это корневой элемент — он единственный на странице и содержит внутри себя все остальные теги. Атрибут lang="ru" указывает, что основной язык страницы — русский. Это важно для поисковых систем и программ чтения с экрана.

> Если вы создаёте страницу на английском, укажите lang="en". Браузер использует этот атрибут для выбора правильной раскладки клавиатуры и словаря проверки орфографии.

Секция <head> — метаданные страницы

Тег <head> содержит информацию о странице, а не сам контент. Пользователь не видит содержимое <head> напрямую, но браузер и поисковые системы используют его постоянно.

Три обязательных элемента внутри <head>:

| Элемент | Назначение | Пример | |---------|-----------|--------| | <meta charset="UTF-8"> | Кодировка символов | Позволяет корректно отображать кириллицу, спецсимволы | | <meta name="viewport"> | Настройка области просмотра | Адаптация под мобильные устройства | | <title> | Заголовок вкладки браузера | «Хоккейные команды — Главная» |

Кодировка UTF-8 — это международный стандарт, который поддерживает символы практически всех языков мира. Без неё русские буквы на странице превратятся в набор непонятных символов вроде ой.

Viewport — это видимая область страницы в браузере. Мета-тег viewport говорит браузеру: «Установи ширину области просмотра равной ширине экрана и не масштабируй страницу при загрузке». Без него сайт на телефоне будет выглядеть как уменьшенная копия десктопной версии.

Title — это текст, который отображается на вкладке браузера и в результатах поиска. Для сайта о хоккее хорошим заголовком будет что-то конкретное: «ХК Спартак Москва — расписание и статистика», а не просто «Сайт».

Секция <body> — видимый контент

Тег <body> содержит всё, что видит пользователь: текст, картинки, таблицы, ссылки. Именно здесь будет жить ваш контент о хоккейных командах.

Создаём первый файл

Теперь соберём всё вместе. Создайте файл index.html в любом текстовом редакторе — подойдёт даже «Блокнот», но лучше использовать VS Code или Sublime Text с подсветкой синтаксиса.

Сохраните файл и откройте его двойным кликом — он загрузится в браузере. Вы увидите заголовок и абзац текста. Это работает, потому что браузер прочитал структуру, нашёл <body> и отобразил его содержимое.

Отступы и читаемость кода

Обратите внимание на отступы в коде: каждый вложенный элемент сдвигается на один табулятор (или 4 пробела) правее родителя. Это не влияет на отображение страницы, но критически важно для читаемости. Когда ваш файл вырастет до сотни строк, без отступов вы потеряете ориентацию за секунды.

Представьте, что это как нумерация в хоккейной программке: формально можно написать всё подряд, но если расставить номера и позиции — информация читается мгновенно.

Валидность HTML-кода

Валидный HTML — это код, который соответствует стандартам W3C (организации, которая разрабатывает веб-стандарты). Проверить свой код можно на сайте validator.w3.org. Невалидный код может работать, но браузер будет «догадываться» о ваших намерениях, и на разных устройствах результат может отличаться.

Три простых правила валидности:

  • Каждый открывающий тег должен иметь закрывающий (кроме одиночных: <meta>, <br>, <img>)
  • Теги вкладываются друг в друга, но не пересекаются
  • Атрибуты записываются в открывающем теге
  • Пример неправильной вложенности: <p><strong>Текст</p></strong> — теги пересекаются. Правильно: <p><strong>Текст</strong></p>.

    Комментарии в HTML

    Комментарий — это заметка для разработчика, которую браузер игнорирует. Синтаксис: <!-- текст комментария -->. Используйте комментарии для разделения логических блоков:

    Комментарии помогают ориентироваться в коде, когда вы вернётесь к проекту через неделю и забудете, где что находится.

    Теперь у вас есть рабочий HTML-файл и понимание базовой структуры. В следующей статье мы наполним <body> реальным контентом: заголовками, абзацами и списками команд.

    2. Разметка текстового контента и списков

    Разметка текстового контента и списков

    Когда вы открываете программку к хоккейному матчу, информация там не просто текст подряд — есть названия команд крупным шрифтом, составы списками, статистика таблицами. Браузер без подсказок отнесётся ко всему тексту одинаково, и страница превратится в серую простыню. Семантическая разметка — это способ сказать браузеру: «Вот заголовок, вот абзац, вот список — отобрази каждый по-своему».

    Заголовки: от <h1> до <h6>

    HTML предлагает шесть уровней заголовков. Тег <h1> — самый крупный и важный, <h6> — самый мелкий. Это не просто размер шрифта — поисковые системы используют заголовки для понимания структуры страницы.

    > Главное правило: на одной странице должен быть ровно один <h1>. Он описывает тему всей страницы. Остальные заголовки вкладываются по иерархии — как главы и подглавы в книге.

    Не пропускайте уровни. Переход от <h1> сразу к <h3> — это как в программке написать название матча, а потом сразу перейти к третьему периоду, пропустив составы. Браузер это допустит, но структура будет нарушенной.

    Абзацы и текстовое форматирование

    Тег <p> создаёт абзац — базовую единицу текста. Браузер автоматически добавляет отступы между абзацами, визуально разделяя блоки текста.

    Для выделения важных фрагментов внутри абзаца используйте семантические теги:

  • <strong>важный текст (браузер делает его жирным)
  • <em>акцентированный текст (браузер делает его курсивом)
  • <mark> — выделенный маркером текст
  • <small> — мелкий текст для примечаний
  • Разница между <strong> и <b> (жирный) — в смысле. Тег <strong> говорит: «Этот текст важен». Тег <b> говорит: «Покажи это жирным». Аналогично <em> (акцент) против <i> (курсив). Для сайта о хоккее используйте семантические варианты — они помогают поисковикам и программам чтения с экрана.

    Маркированные списки

    Маркированный список (<ul> + <li>) — это перечисление, где порядок не важен. Идеально подходит для списка достижений, названий команд или перечня услуг.

    Каждый элемент списка оборачивается в <li> (list item). Браузер автоматически ставит маркеры-точки перед каждым пунктом.

    Нумерованные списки

    Нумерованный список (<ol> + <li>) используется, когда порядок имеет значение: этапы, шаги инструкции, рейтинг.

    Нумерация выставляется автоматически. Если вы переставите элементы местами — нумерация обновится.

    Вложенные списки

    Списки можно вкладывать друг в друга. Например, если у каждой команды есть подразделы:

    Вложенный <ul> всегда находится внутри элемента <li>, а не рядом с ним. Это частая ошибка новичков.

    Список определений

    Есть ещё один тип списков — список определений (<dl>, <dt>, <dd>). Он подходит для глоссариев и пар «термин — значение»:

    <dt> — термин (definition term), <dd> — его расшифровка (definition description). Браузер отображает определение с отступом от термина.

    Практический пример: страница о команде

    Объединим всё в одном фрагменте — это будет часть будущей страницы сайта:

    Здесь каждый элемент несёт смысл: <h1> — название сайта, <h2> — крупные разделы, <h3> — подразделы, <p> — описания, списки — перечисления. Браузер отобразит всё с правильными размерами и отступами, а поисковик поймёт иерархию контента.

    В следующей статье мы научимся оформлять статистику команд в виде таблиц — там, где списки уже не справляются.

    3. Создание таблиц для статистики команд

    Создание таблиц для статистики команд

    Откройте сайт любой хоккейной лиги — и вы увидите таблицы повсюду: турнирная таблица, статистика игроков, результаты матчей. Таблица — это единственный способ структурированно представить данные, где важны связи между строками и столбцами. Списки тут не помогут: попробуйте записать турнирную таблицу списком, и вы потеряете связь «команда — очки — шайбы» за секунду. Сегодня мы научимся создавать HTML-таблицы на примере реальной хоккейной статистики.

    Базовая структура таблицы

    Таблица строится из трёх основных тегов:

  • <table> — контейнер всей таблицы
  • <tr> — строка (table row)
  • <td> — ячейка с данными (table data)
  • Браузер отобразит это как сетку ячеек. Но здесь есть проблема: мы не знаем, что означает каждая колонка. Это как статистический лист без заголовков — цифры есть, а смысла нет.

    Заголовки таблицы

    Для заголовков столбцов используется тег <th> (table header). Он работает как <td>, но браузер делает текст жирным и центрирует его. А чтобы логически отделить шапку от данных, строки оборачивают в <thead> и <tbody>:

    > <thead>, <tbody> и <tfoot> — это семантические обёртки. Они не меняют внешний вид, но помогают браузеру и вспомогательным технологиям понять структуру. При прокрутке длинной таблицы браузер может зафиксировать <thead> — это зависит от стилей, но для этого нужна правильная разметка.

    Полная турнирная таблица

    Теперь соберём реальную турнирную таблицу первой лиги с расшифровкой всех столбцов:

    Расшифровка столбцов: И — игры, В — победы, Н — ничьи, П — поражения, ШЗ — шайбы забитые, ШП — шайбы пропущенные, О — очки.

    Подвал таблицы

    Тег <tfoot> используется для итоговой строки. Например, если нужно показать суммарную статистику лиги:

    Объединение ячеек

    Иногда данные занимают несколько строк или столбцов. Для этого есть атрибуты colspan (объединение по горизонтали) и rowspan (по вертикали).

    Представьте таблицу результатов матчей, где один день содержит несколько игр:

    rowspan="2" означает, что ячейка «15 марта» занимает две строки. colspan="2" означает, что ячейка «Игровой день — выходной» занимает два столбца. Количество строк или столбцов, которые «поглощаются» объединённой ячейкой, нужно вычесть из соседних строк — иначе таблица сломается.

    Таблица статистики игроков

    Ещё один типичный кейс — статистика отдельных игроков:

    Здесь Г — голы, П — передачи, О — очки (голы + передачи), +/− — показатель полезности (разница забитых и пропущенных командой шайб, пока игрок на льду).

    Подпись таблицы

    Для пояснения, что именно содержит таблица, используйте тег <caption>. Он размещается сразу после открывающего <table>:

    <caption> — это не заголовок страницы (<h2>), а подпись именно к таблице. Поисковики и программы чтения с экрана связывают её с данными таблицы.

    Частые ошибки

    Самая распространённая ошибка — неправильное количество <td> в строках. Если в первой строке 5 ячеек, а во второй — 4, браузер «сдвинет» данные, и таблица разъедется. Всегда проверяйте, что каждая строка содержит одинаковое количество ячеек (с учётом colspan и rowspan).

    Вторая ошибка — использование таблиц для вёрстки макета страницы. В 2000-х так делали повсеместно: всю страницу строили как таблицу с невидимыми границами. Сегодня это антипаттерн. Таблицы — только для табличных данных: статистика, расписание, сравнения. Для макета страницы в следующих статьах мы используем семантические блоки.

    В следующей статье мы научимся добавлять изображения логотипов команд и ссылки на страницы игроков — без этого сайт о хоккее будет выглядеть как газетная заметка.

    4. Работа с изображениями и ссылками

    Работа с изображениями и ссылками

    Представьте сайт о хоккее без единой фотографии — только текст и таблицы. Это как газетный отчёт без снимков с матча: информация есть, но эмоций и контекста нет. Сегодня мы научимся вставлять изображения на страницу и связывать страницы между собой ссылками — двумя элементами, без которых веб вообще не существует.

    Вставка изображений

    Тег <img> — это одиночный тег (без закрывающей пары), который вставляет картинку на страницу. У него два обязательных атрибута:

    src (source) — путь к файлу изображения. Это может быть:

  • Относительный путь: images/molot-logo.png — файл лежит в папке images рядом с HTML-файлом
  • Абсолютный URL: https://example.com/photos/team.jpg — картинка на другом сервере
  • alt (alternative text) — альтернативный текст, который отображается, если картинка не загрузилась. Его читают программы для слабовидящих и поисковые системы. Описание должно быть конкретным: не «картинка», а «Логотип ХК «Молот» — молот на фоне ледяной поверхности».

    > Тег <img> не имеет закрывающей пары — это один из немногих так называемых пустых тегов в HTML. Вместе с ним к этой группе относятся <br>, <hr>, <meta>, <input>.

    Папка для изображений

    Организуйте файлы проекта с самого начала. Создайте папку images (или img) в корне проекта и складывайте туда все картинки:

    Путь images/molot-logo.png работает из index.html, потому что оба файла находятся в одной папке hockey-site. Если бы players.html лежал в подпапке pages, путь оттуда был бы ../images/molot-logo.png../ поднимается на уровень выше.

    Форматы изображений

    Для сайта о хоккее пригодятся три формата:

    | Формат | Расширение | Когда использовать | |--------|-----------|-------------------| | JPEG | .jpg | Фотографии матчей, портреты игроков | | PNG | .png | Логотипы, иконки, картинки с прозрачностью | | SVG | .svg | Векторные иконки, схемы площадки |

    JPEG сжимает изображение с потерями — файл получается лёгким, но при сильном сжатии появляются артефакты. PNG сохраняет качество, но файл тяжелее. SVG — это не картинка-растровая сетка, а математическое описание линий: масштабируется без потерь и весит килобайты.

    Размеры изображений

    Атрибуты width и height задают размер картинки в пикселях:

    Указание размеров — не просто для красоты. Браузер резервирует место под картинку до её загрузки. Без width и height страница «прыгает»: текст сначала занимает всё пространство, а потом сдвигается, когда картинка загружается. Это называется CLS (Cumulative Layout Shift) — один из показателей скорости загрузки сайта.

    Подписи к изображениям

    Для подписи под картинкой используйте связку <figure> + <figcaption>:

    <figure> — это семантический контейнер для самодостаточного контента (изображения, диаграммы, кода). <figcaption> — подпись к нему. Браузер и поисковик понимают, что подпись относится именно к этой картинке.

    Ссылки: основа веба

    Тег <a> (anchor — якорь) создаёт гиперссылку — элемент, по которому можно кликнуть для перехода на другую страницу. Именно ссылки превращают набор отдельных документов в связную сеть — web.

    href (hypertext reference) — адрес, куда ведёт ссылка. Текст между открывающим и закрывающим тегом — это то, что видит и на что кликает пользователь.

    Внешние и внутренние ссылки

    Внешняя ссылка ведёт на другой сайт. По умолчанию браузер открывает её в той же вкладке, заменяя вашу страницу. Чтобы открыть в новой вкладке, добавьте атрибут target="_blank":

    Атрибут rel="noopener noreferrer" — мера безопасности. Без него открываемая страница получит доступ к вашей через объект window.opener. Для сайта о хоккее это может быть не критично, но привычка ставить rel при target="_blank" — хороший тон.

    Внутренняя ссылка ведёт на другую страницу вашего сайта. Путь указывается относительно текущего файла:

    Ссылки-изображения

    Изображение тоже может быть ссылкой — достаточно обернуть <img> в <a>:

    Теперь клик по логотипу команды переводит на страницу этой команды. Это стандартный паттерн на сайтах спортивных лиг — логотипы команд в сетке на главной странице.

    Навигация сайта

    Собранные вместе внутренние ссылки образуют навигацию. Семантический тег <nav> сообщает браузеру: «Это блок навигации»:

    Браузер не стилизует <nav> по умолчанию — ссылки будут идти в строку. Но программы чтения с экрана могут предложить пользователю перейти сразу к навигации, пропустив остальной контент.

    Ссылки на фрагменты страницы

    Если страница длинная (например, полная статистика сезона), можно создать якорные ссылки — переходы к определённым разделам на той же странице. Для этого элементу-цели ставят id, а в href указывают #id:

    Клик по «Вратари» мгновенно прокрутит страницу к разделу с id="goalkeepers". Значение id должно быть уникальным на странице и не содержать пробелов.

    Собираем вместе: карточка команды

    Объединим изображения и ссылки в компактный блок — карточку команды, которую можно использовать на главной странице:

    Кликабельный логотип, заголовок-ссылка и текстовая ссылка — три способа попасть на страницу команды. Это не избыточность, а удобство: кто-то кликнет по картинке, кто-то — по названию.

    В следующей статье мы соберём все изученные элементы — структуру документа, текст, списки, таблицы, картинки и ссылки — в полноценную главную страницу сайта о хоккейных командах.

    5. Сборка первой страницы сайта о хоккее

    Сборка первой страницы сайта о хоккее

    За четыре предыдущие статьи вы освоили отдельные инструменты: структуру HTML-документа, текстовую разметку, списки, таблицы, изображения и ссылки. Теперь пришло время собрать их в единое целое — как тренер формирует состав из отдельных игроков. Сегодня вы создадите полноценную главную страницу сайта о хоккейных командах города, которая будет одновременно информативной и структурированной.

    Семантические блоки страницы

    Прежде чем писать код, нужно понять, из каких смысловых блоков состоит типичная главная страница спортивного сайта:

  • Шапка (<header>) — логотип, название сайта, навигация
  • Основной контент (<main>) — новости, таблица, расписание
  • Боковая панель (<aside>) — быстрые ссылки, краткая информация
  • Подвал (<footer>) — копирайт, контакты, ссылки на соцсети
  • Эти теги — не просто контейнеры. Они дают браузеру, поисковым системам и программам чтения с экрана понять, где что находится. Скринридер может предложить пользователю «перейти к основному контенту», минуя шапку — и для этого он ищет тег <main>.

    План страницы

    Перед написанием кода набросаем структуру на бумаге:

    Полный код главной страницы

    Создайте файл index.html и вставьте в него следующий код. Это не фрагмент — это полная рабочая страница:

    Разбор ключевых решений

    Ссылки в таблице — названия команд в турнирной таблице обёрнуты в <a>. Это превращает сухую статистику в навигационный элемент: клик по названию команды ведёт на её страницу.

    Тег <section> — оборачивает логически завершённые блоки контента. Каждый <section> содержит свой <h2>, что формирует чёткую иерархию заголовков: <h1> (весь сайт) → <h2> (разделы) → <h3> (подразделы, например, заголовки новостей).

    Тег <article> — используется для новостей. Каждая новость — это самодостаточный фрагмент, который мог бы существовать отдельно (например, в RSS-ленте). Именно поэтому <article>, а не просто <div>.

    Ссылка mailto: — в подвале адрес электронной почты обёрнут в <a href="mailto:...">. При клике браузер откроет почтовый клиент с заполненным полем «Кому».

    Файловая структура проекта

    Чтобы все пути работали корректно, создайте следующую структуру папок:

    Файлы в папке pages/ пока могут быть пустыми заготовками — достаточно базового шаблона с <h1> и ссылкой на главную. Вы будете наполнять их по мере развития проекта.

    Что дальше

    Сейчас страница работает, но выглядит как документ из 1995 года — текст без стилей, таблицы с рамками по умолчанию, ссылки стандартного синяго цвета. Это нормально: HTML отвечает за структуру и содержание, а за внешний вид отвечает CSS. В отдельном курсе вы научитесь стилизовать эту страницу: задавать цвета, шрифты, отступы, расположение блоков.

    Но даже без CSS ваша страница уже функциональна: она семантически правильно размечена, навигация работает, таблицы читаемы, изображения имеют описания. Это крепкий фундамент, на котором можно строить что угодно.