Главная идея
Валидация — это проверка кода на соответствие официальной спецификации HTML и CSS. Браузер очень «снисходителен»: встретив незакрытый тег или мусорный атрибут, он не падает с ошибкой, а молча достраивает дерево документа по своим внутренним правилам восстановления. Результат вы видите на экране — и часто кажется, что всё в порядке. Но «выглядит нормально» и «корректно» — разные вещи: каждый браузер достраивает сломанную разметку немного по-своему, поэтому одна и та же страница в Chrome, Safari и в скринридере может вести себя по-разному.
Валидатор — это проверка орфографии для кода. Текстовый редактор поймёт фразу с опечатками, и человек её прочитает, но грамотный текст вызывает доверие и не сбивает с толку. Валидатор так же подчёркивает «ошибки правописания» разметки. Другая близкая аналогия — техосмотр перед выездом: машина и так заводится, но без проверки тормозов вы узнаете о проблеме в самый неподходящий момент. Валидация ловит дефекты до того, как их встретит пользователь.
Как работает проверка: код → валидатор → исправление
Цикл валидации всегда один и тот же: вы отдаёте код инструменту, получаете список ошибок с номерами строк, исправляете причину и проверяете снова, пока список не станет пустым.
Что именно ловит валидатор
- Незакрытые и лишние теги — например,
<p>без</p>. - Неверную вложенность — блочный элемент внутри строчного,
<p>внутри<p>,<div>внутри<span>. - Дублирующиеся
id— один и тот жеidна двух элементах ломает якоря, JS и доступность. - Отсутствие обязательных атрибутов —
<img>безalt,<label>без связи с полем. - Опечатки в CSS —
colrвместоcolor, неверные значения: такое свойство браузер просто игнорирует.
Когда применять
Валидируйте не только главную страницу, но и все шаблоны. Ошибки разбирайте по причине, а не прячьте: каждая ошибка — это потенциальный баг в чужом браузере или у пользователя скринридера. Предупреждение (warning) не всегда блокер, но оно должно быть осознанным. В командном проекте проверку выносят в CI — тогда невалидный код не попадёт в основную ветку.
Частая ошибка восприятия
«Страница открывается — значит, всё хорошо». Это самая распространённая ловушка. Доступность (семантика, alt, связь label↔поле) — часть качества разметки, и валидатор её частично проверяет. Невалидный код может работать у вас и ломаться у других.
<button> вместо <div onclick>, связывайте <label for> с полем — это валидно и доступно одновременно.