10 KiB
status, type, tags, created, updated, title, source, aliases
| status | type | tags | created | updated | title | source | aliases | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| processing | concept |
|
2026-05-30 | 2026-05-30 | Основы HTML (структура, таблицы, формы) |
|
|
Основы HTML
HTML (Hypertext Markup Language) — язык разметки для структурирования и отображения веб-страниц.
Структура HTML-документа
Базовый шаблон (HTML5):
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Заголовок страницы</title>
</head>
<body>
<!-- Контент страницы -->
</body>
</html>
<!DOCTYPE html>— объявление типа документа.<head>— метаданные (не отображаются в браузере).<body>— основное содержимое.
Метатег Viewport
Критичен для мобильных устройств. Позволяет контролировать масштаб.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Основные теги и семантика
Тег — элемент разметки, который говорит браузеру, что находится на странице: заголовок, абзац, ссылка, форма, таблица.
Обычно тег состоит из открывающей и закрывающей части:
<p>Текст абзаца</p>
Некоторые теги не имеют закрывающей пары:
<img src="cat.jpg" alt="Кот">
<br>
<input type="email" name="email">
Атрибуты уточняют поведение тега:
href— адрес ссылки.src— путь к изображению или файлу.alt— текстовое описание изображения.class— CSS-класс для стилизации.id— уникальный идентификатор элемента.name— имя поля формы, с которым данные отправляются на сервер.
Блочные и строчные элементы
- Блочные элементы занимают всю доступную ширину и обычно начинаются с новой строки:
<div>,<p>,<h1>,<section>,<form>. - Строчные элементы находятся внутри строки текста и не ломают поток:
<span>,<a>,<strong>,<em>,<code>.
<p>
Это абзац с <strong>важным текстом</strong> и
<a href="/about/">ссылкой</a>.
</p>
Семантические теги
Семантика — это использование тегов по смыслу, а не только ради внешнего вида.
Например, <main> означает главный контент страницы, <nav> — навигацию, <article> — самостоятельный материал. Это помогает браузеру, поисковым системам, скринридерам и другим инструментам лучше понимать структуру страницы.
<header>— верхняя часть страницы или секции: логотип, заголовок, навигация.<nav>— блок навигационных ссылок.<main>— основной контент страницы; обычно один на страницу.<section>— смысловой раздел страницы.<article>— самостоятельный материал: статья, пост, карточка новости.<aside>— дополнительный контент: боковая панель, подсказки, связанные ссылки.<footer>— нижняя часть страницы или секции.
<body>
<header>
<h1>Блог</h1>
<nav>
<a href="/">Главная</a>
<a href="/about/">О проекте</a>
</nav>
</header>
<main>
<article>
<h2>Что такое HTML</h2>
<p>HTML описывает структуру веб-страницы.</p>
</article>
<aside>
<h2>Похожие материалы</h2>
<a href="/css/">Основы CSS</a>
</aside>
</main>
<footer>
<p>2026</p>
</footer>
</body>
Неправильно заменять всё на <div>, если есть более точный тег. <div> нужен как нейтральный контейнер, когда у блока нет отдельного смыслового значения.
Текст и форматирование
- Заголовки:
<h1>...<h6>. - Абзацы и переносы:
<p>,<br>. - Логическое выделение:
<strong>(важное, жирный),<em>(акцент, курсив),<code>(код). - Контейнеры:
<div>(блочный),<span>(строчный).
Списки
- Маркированный:
<ul>+<li>. - Нумерованный:
<ol>+<li>.
Ссылки и изображения
- Ссылка:
<a href="URL" target="_blank">Текст</a>. - Изображение:
<img src="path" alt="описание" width="500">.
Таблицы
Используются для отображения структурированных данных. Не рекомендуются для верстки макета.
Структура таблицы:
<table>
<caption>Заголовок таблицы</caption>
<thead>
<tr>
<th>Заголовок столбца 1</th>
<th>Заголовок столбца 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Данные 1</td>
<td>Данные 2</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Итог 1</td>
<td>Итог 2</td>
</tr>
</tfoot>
</table>
- Объединение ячеек:
colspan(по горизонтали),rowspan(по вертикали).
Формы
Инструмент для сбора данных пользователя.
Базовая форма:
<form action="/handler-url/" method="post">
<label for="username">Имя:</label>
<input type="text" id="username" name="name" placeholder="Введите имя">
<button type="submit">Отправить</button>
</form>
Элементы управления:
<input>— универсальное поле ввода. Поведение зависит отtype.<select>+<option>— выпадающий список.<textarea>— многострочное поле для текста.<button>— кнопка отправки, сброса или обычного действия.<fieldset>+<legend>— группировка связанных полей с заголовком группы.
Основные type для <input>:
text— обычная строка.password— поле пароля, символы скрываются.email— email; браузер проверяет базовый формат адреса.number— числовой ввод.checkbox— независимый флажок: можно выбрать несколько вариантов.radio— выбор одного варианта из группы с одинаковымname.file— загрузка файла.date— выбор даты.hidden— скрытое поле, не видно пользователю, но отправляется с формой.
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="age">Возраст:</label>
<input type="number" id="age" name="age" min="18" max="99">
<label>
<input type="checkbox" name="agreement" required>
Согласен с условиями
</label>
<fieldset>
<legend>Способ связи</legend>
<label>
<input type="radio" name="contact_method" value="email">
Email
</label>
<label>
<input type="radio" name="contact_method" value="phone">
Телефон
</label>
</fieldset>
<label for="city">Город:</label>
<select id="city" name="city">
<option value="moscow">Москва</option>
<option value="spb">Санкт-Петербург</option>
</select>
<label for="comment">Комментарий:</label>
<textarea id="comment" name="comment" rows="5"></textarea>
Атрибуты валидации:
required— поле обязательно для заполнения.minlength— минимальная длина текста.maxlength— максимальная длина текста.min— минимальное значение для числа или даты.max— максимальное значение для числа или даты.pattern— регулярное выражение, которому должно соответствовать значение.type="email"— проверяет, что введён текст, похожий на email.type="url"— проверяет, что введён URL.
HTML-валидация работает в браузере до отправки формы. Она удобна для пользователя, но не заменяет проверку на сервере: данные можно отправить в обход браузера.
<form action="/register/" method="post">
<label for="username">Логин:</label>
<input
type="text"
id="username"
name="username"
required
minlength="3"
maxlength="20"
pattern="[a-zA-Z0-9_]+"
>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="age">Возраст:</label>
<input type="number" id="age" name="age" min="18" max="99">
<button type="submit">Зарегистрироваться</button>
</form>