ШПАРГАЛКА

HTML

Шпаргалка по HTML: структура документа, теги, ссылки, списки, таблицы, формы, семантика HTML5, мультимедиа, сущности, мета-теги и доступность.

HTML (HyperText Markup Language) — язык разметки, на котором строятся все веб-страницы. Он описывает структуру и смысл содержимого: заголовки, абзацы, ссылки, изображения, формы. Эта шпаргалка собирает основные теги и приёмы современного HTML5 с готовыми примерами.

Структура документа

Любая страница начинается с объявления <!DOCTYPE html> — оно включает стандартный режим браузера. Далее идёт корневой элемент <html> с атрибутом lang, внутри которого расположены служебная шапка <head> и видимое тело <body>.

<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Заголовок вкладки</title>
  </head>
  <body>
    <h1>Привет, мир!</h1>
    <p>Первый абзац страницы.</p>
  </body>
</html>

<head> содержит мета-данные: кодировку, заголовок вкладки, подключение стилей и скриптов. <body> — всё, что видит пользователь. Тег <meta charset="UTF-8"> обязателен, иначе кириллица может отображаться кракозябрами.

Заголовки и текст

Заголовки задаются тегами от <h1> (самый важный) до <h6>. На странице должен быть один <h1>, а вложенность уровней — последовательной. Абзацы оборачивают в <p>.

<h1>Главный заголовок</h1>
<h2>Подзаголовок</h2>
<p>Обычный абзац текста. Перенос строки:<br>новая строка.</p>
<p>Текст бывает <strong>важным</strong> и <em>выделенным интонацией</em>.</p>
<hr>
<blockquote>Цитата из источника.</blockquote>
<p>Код внутри текста: <code>console.log()</code>.</p>

<strong> придаёт смысловую важность (жирный), <em> — акцент (курсив). <br> — перенос строки, <hr> — тематический разделитель. Это семантические теги: предпочитайте их чисто визуальным <b> и <i>.

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

Ссылку создаёт тег <a> с атрибутом href. Картинку — <img> с обязательными src (путь) и alt (текстовое описание).

<a href="https://codechick.io">Перейти на сайт</a>
<a href="https://example.com" target="_blank" rel="noopener">
  Открыть в новой вкладке
</a>
<a href="#section">Якорь на странице</a>
<a href="mailto:[email protected]">Написать письмо</a>

<img src="/cat.png" alt="Рыжий кот спит на клавиатуре" width="320">

Атрибут target="_blank" открывает ссылку в новой вкладке; добавляйте к нему rel="noopener" для безопасности. alt у изображения важен для доступности и SEO — он показывается, если картинка не загрузилась, и читается скринридерами.

Списки

Маркированный список — <ul>, нумерованный — <ol>, элементы внутри — <li>. Списки можно вкладывать друг в друга. Есть и список определений <dl>.

<ul>
  <li>Первый пункт</li>
  <li>Второй пункт
    <ul>
      <li>Вложенный пункт</li>
    </ul>
  </li>
</ul>

<ol>
  <li>Шаг один</li>
  <li>Шаг два</li>
</ol>

<dl>
  <dt>HTML</dt>
  <dd>Язык разметки страниц.</dd>
</dl>

Таблицы

Таблица — тег <table>. Шапка оформляется в <thead>, тело — в <tbody>. Строка — <tr>, ячейка-заголовок — <th>, обычная ячейка — <td>. Объединять ячейки помогают colspan и rowspan.

<table>
  <thead>
    <tr>
      <th>Язык</th>
      <th>Год</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Python</td>
      <td>1991</td>
    </tr>
    <tr>
      <td colspan="2">Объединённая ячейка</td>
    </tr>
  </tbody>
</table>

Формы

Форма — тег <form> с атрибутами action (куда отправлять) и method (GET или POST). Поля ввода — <input>, каждое привязывают к подписи <label> через совпадение for и id.

<form action="/submit" method="post">
  <label for="name">Имя</label>
  <input type="text" id="name" name="name" placeholder="Иван">

  <label for="mail">Email</label>
  <input type="email" id="mail" name="email" required>

  <button type="submit">Отправить</button>
</form>

Типы поля input

Атрибут type меняет поведение и вид поля: от текста до выбора даты и цвета. Правильный тип включает удобную клавиатуру на телефоне и встроенную проверку.

<input type="text">        <!-- обычный текст -->
<input type="password">    <!-- скрытый ввод -->
<input type="email">       <!-- e-mail с проверкой -->
<input type="number" min="0" max="10">
<input type="tel">         <!-- телефон -->
<input type="url">         <!-- адрес сайта -->
<input type="date">        <!-- выбор даты -->
<input type="color">       <!-- палитра цвета -->
<input type="range" min="0" max="100">
<input type="file">        <!-- загрузка файла -->
<input type="checkbox">    <!-- флажок -->
<input type="radio" name="plan"> <!-- переключатель -->
<input type="hidden">      <!-- скрытое значение -->

Select, textarea и кнопки

Выпадающий список — <select> с вариантами <option>. Многострочный текст — <textarea>. Кнопки — <button> с типами submit, reset или button.

<label for="city">Город</label>
<select id="city" name="city">
  <option value="msk">Москва</option>
  <option value="spb" selected>Санкт-Петербург</option>
</select>

<label for="msg">Сообщение</label>
<textarea id="msg" name="msg" rows="4"></textarea>

<button type="submit">Отправить</button>
<button type="reset">Сбросить</button>

Валидация форм

Браузер умеет проверять поля сам, без JavaScript. Атрибут required делает поле обязательным, pattern задаёт регулярное выражение, min/max и minlength/maxlength ограничивают значения и длину.

<input type="text" required minlength="2" maxlength="30">
<input type="number" min="18" max="99" step="1">
<input type="tel" pattern="[0-9]{10}" title="10 цифр">
<input type="email" required>

Если поле не проходит проверку, форма не отправится, а браузер покажет подсказку. Атрибут title поясняет, что именно ожидается от пользователя.

Семантические теги HTML5

Семантические теги описывают роль блока, а не его внешний вид. Они улучшают доступность, SEO и читаемость кода. Вместо безликих <div> используйте теги по смыслу.

<body>
  <header>Шапка сайта, логотип</header>

  <nav>Меню навигации</nav>

  <main>
    <article>
      <h2>Заголовок статьи</h2>
      <section>Раздел статьи</section>
    </article>

    <aside>Боковая колонка</aside>
  </main>

  <footer>Подвал: контакты, копирайт</footer>
</body>

<header> — шапка, <nav> — навигация, <main> — основное содержимое (один на странице), <article> — самостоятельная единица контента, <section> — тематический раздел, <aside> — побочный блок, <footer> — подвал. Полезны также <figure> и <figcaption> для изображений с подписью.

Мультимедиа: audio и video

Звук вставляют тегом <audio>, видео — <video>. Атрибут controls показывает встроенный плеер. Несколько форматов задают через вложенные <source> — браузер выберет поддерживаемый.

<audio controls>
  <source src="song.mp3" type="audio/mpeg">
  Ваш браузер не поддерживает аудио.
</audio>

<video controls width="640" poster="preview.jpg">
  <source src="clip.mp4" type="video/mp4">
  <source src="clip.webm" type="video/webm">
  Видео не поддерживается.
</video>

Дополнительные атрибуты: autoplay (автозапуск, обычно только с muted), loop (повтор), poster (картинка-заставка до старта видео).

Атрибуты: id, class, data-*

Атрибуты уточняют поведение элементов. id — уникальный идентификатор (один на странице), class — имя для группировки и стилизации (можно несколько через пробел). data-* хранит произвольные данные для JavaScript.

<div id="header" class="card card--big">
  Содержимое
</div>

<button data-user-id="42" data-role="admin">
  Профиль
</button>

<input type="text" disabled>     <!-- логический атрибут -->
<img src="x.png" alt="" loading="lazy">

Значения data-* читаются в JavaScript через element.dataset. Логические атрибуты (disabled, checked, required) не требуют значения — достаточно их наличия.

HTML-сущности

Некоторые символы нельзя писать напрямую, потому что они часть синтаксиса HTML. Их заменяют сущностями вида &имя; или &#код;.

&lt;     &rarr;  знак < (меньше)
&gt;     &rarr;  знак > (больше)
&amp;    &rarr;  знак & (амперсанд)
&quot;   &rarr;  двойная кавычка
&nbsp;   &rarr;  неразрывный пробел
&copy;   &rarr;  знак (c) копирайт
&mdash;  &rarr;  длинное тире
&rarr;   &rarr;  стрелка вправо
&#9733;  &rarr;  звезда (числовой код)

Самые частые на практике — &lt;, &gt; и &amp;: без них браузер примет текст за теги. &nbsp; склеивает слова, чтобы их не разорвал перенос строки.

Мета-теги и основы SEO

Мета-теги в <head> сообщают браузеру и поисковикам важную информацию о странице. Грамотные <title> и description напрямую влияют на то, как страница выглядит в выдаче.

<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, initial-scale=1">
  <title>Шпаргалка по HTML — codechick</title>
  <meta name="description"
        content="Краткое описание страницы до 160 символов">

  <link rel="canonical" href="https://codechick.io/html">

  <!-- Open Graph для соцсетей -->
  <meta property="og:title" content="HTML-шпаргалка">
  <meta property="og:image" content="/preview.png">
</head>

viewport обязателен для адаптивности на мобильных. canonical указывает основной адрес страницы и убирает дубли. Теги og:* (Open Graph) задают красивую карточку при репосте в соцсети и мессенджеры.

Доступность (accessibility)

Доступность делает сайт удобным для людей со скринридерами и клавиатурной навигацией. Три кита: alt у картинок, <label> у полей и точечные aria-* атрибуты там, где обычной семантики не хватает.

<!-- описание изображения -->
<img src="chart.png" alt="График роста за 2025 год">
<!-- декоративная картинка: пустой alt -->
<img src="line.svg" alt="">

<!-- подпись к полю -->
<label for="q">Поиск</label>
<input id="q" type="search">

<!-- кнопка-иконка без текста -->
<button aria-label="Закрыть окно">&times;</button>

<nav aria-label="Основное меню"> ... </nav>

Каждое поле формы должно иметь связанный <label>. Если кнопка содержит только иконку, добавьте aria-label с текстовым описанием. У декоративных изображений ставьте пустой alt="", чтобы скринридер их пропустил. Главное правило ARIA: сначала используйте правильный семантический тег, и только потом — aria-атрибуты.

Поддержать проект