HTML: структура страницы
HTML: структура страницы
HTML - это скелет страницы. Если CSS - одежда, то HTML - кости. И да, иногда кости нужно подписывать семантикой, а не просто «всё div».
Минимальная страница
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>MyApp</title>
</head>
<body>
<h1>Привет, веб!</h1>
</body>
</html>
<!doctype html> - говорит браузеру использовать современный стандарт. <html lang="ru"> - язык страницы (важно для SEO и screen readers). meta viewport - без него мобильные браузеры отображают страницу как десктопную, мелко.
Заголовки и текст
<h1>Главный заголовок (один на страницу)</h1>
<h2>Секция</h2>
<h3>Подсекция</h3>
<p>Параграф текста. Браузер добавляет отступы автоматически.</p>
<strong>Важный текст</strong> (жирный, семантически - акцент)
<em>Выделенный текст</em> (курсив, семантически - лёгкий акцент)
Списки
<!-- Неупорядоченный (маркеры) -->
<ul>
<li>Первый элемент</li>
<li>Второй элемент</li>
</ul>
<!-- Упорядоченный (нумерация) -->
<ol>
<li>Шаг 1</li>
<li>Шаг 2</li>
</ol>
Ссылки и изображения
<a href="https://example.com">MyApp</a>
<a href="/course/sql">Курс SQL</a>
<a href="#section">Якорь на странице</a>
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
Внешняя ссылка (новая вкладка)
</a>
<img src="/images/logo.png" alt="Логотип BackendStart" width="200" />
alt - обязательный атрибут. Он описывает изображение для скринридеров и показывается, если картинка не загрузилась.
Семантические теги
HTML5 предоставляет теги, которые описывают смысл контента:
<header>Шапка сайта (логотип, навигация)</header>
<nav>Навигация (меню со ссылками)</nav>
<main>Основной контент страницы (один на страницу)</main>
<article>Самостоятельная статья или запись</article>
<section>Тематическая секция контента</section>
<aside>Боковая панель (не основной контент)</aside>
<footer>Подвал сайта (контакты, ссылки)</footer>
Вместо «всё на div»:
<!-- Плохо -->
<div class="header">
<div class="nav">...</div>
</div>
<div class="main">
<div class="article">...</div>
</div>
<div class="footer">...</div>
<!-- Хорошо -->
<header>
<nav>...</nav>
</header>
<main>
<article>...</article>
</main>
<footer>...</footer>
Таблицы
<table>
<thead>
<tr>
<th>Имя</th>
<th>Роль</th>
</tr>
</thead>
<tbody>
<tr>
<td>Иван</td>
<td>Backend</td>
</tr>
<tr>
<td>Анна</td>
<td>Frontend</td>
</tr>
</tbody>
</table>
Таблицы - для табличных данных. Не для вёрстки (для этого есть Flexbox и Grid).
Формы (базовое)
<form action="/login" method="post">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required />
<label for="pass">Пароль:</label>
<input type="password" id="pass" name="password" required />
<button type="submit">Войти</button>
</form>
label + for связывает текст с полем ввода - клик по тексту ставит фокус в поле. required - браузерная валидация (не заменяет серверную).
Атрибуты data-*
Для хранения данных в HTML-элементах:
<button data-id="42" data-action="delete">Удалить</button>
const btn = document.querySelector('button');
console.log(btn.dataset.id); // "42"
console.log(btn.dataset.action); // "delete"
Мета-теги в head
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Обучающая платформа для бэкенд-разработчиков" />
<title>BackendStart - Обучение бэкенду</title>
<!-- Подключение стилей и шрифтов -->
<link rel="stylesheet" href="/styles.css" />
<link rel="icon" href="/favicon.ico" />
<!-- Open Graph для соцсетей -->
<meta property="og:title" content="BackendStart" />
<meta property="og:description" content="Обучение бэкенд-разработке" />
<meta property="og:image" content="/og-image.png" />
</head>
Мини-задание
- Сверстай страницу: header + nav + main + footer
- В main сделай article с h2, параграфом и списком
- Добавь таблицу с тремя столбцами
- Добавь мета-теги: description, viewport, og:title
- Проверь страницу через DevTools → Elements