Тег label в HTML: подпись для поля формы

Тег <label> подписывает поле формы не только визуально, но и по-настоящему связывает подпись с полем: клик по тексту подписи переключает или ставит фокус на связанное поле. Это не то же самое, что placeholder - подсказка внутри поля, которая исчезает, как только начинаешь печатать.

Кликни прямо по тексту "Согласен с условиями" (не по самому квадратику) - чекбокс всё равно переключится. Это работает благодаря тому, что input вложен внутрь label.

label и его связь с полем

Связать <label> с полем можно двумя способами. Явный - атрибут for у label со значением, совпадающим с id поля. Неявный - просто поместить поле внутрь самого label, как в блокноте выше. Оба способа - настоящая, рабочая связь: клик по подписи фокусирует или переключает поле, а программы чтения с экрана озвучивают подпись вместе с полем, а не отдельно от него.

<label for="name">Имя</label><input id="name" type="text"> - явная связь через for и id, работает даже если поле визуально расположено далеко от подписи.

<p>Имя</p><input type="text"> - выглядит как подпись, но никак технически не связано с полем: клик по тексту ничего не делает, и программа чтения с экрана не свяжет их между собой.

placeholder - не замена label

Атрибут placeholder показывает подсказку внутри пустого поля, но исчезает, как только пользователь начинает печатать - и тогда, если он отвлёкся, приходится стирать введённое, чтобы снова увидеть, что за поле перед ним. Исследование Nielsen Norman Group отдельно указывает ещё две проблемы: у placeholder слишком низкий контраст серого текста по умолчанию, и не все программы чтения с экрана вообще его озвучивают. Использовать placeholder можно - но как дополнение к label, а не вместо него.

<label for="email">Email</label><input id="email" type="email" placeholder="you@example.com"> - label остаётся видимым постоянно, а placeholder только подсказывает формат примером.

<input type="email" placeholder="Email"> - подпись есть только внутри поля: стоит начать печатать - и она пропадает, а у поля вообще нет label.

Из истории Элемент label появился в спецификации HTML 4.0 - рекомендации W3C от 18 декабря 1997 года (с исправленной версией от 24 апреля 1998). В HTML 3.2 (январь 1997) его ещё не было вовсе - формы размечались только через input, select и textarea, без отдельного способа связать с ними подпись. W3C прямо называл label среди нововведений HTML 4.0, сделанных специально ради программ чтения с экрана и кликабельных подписей.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Подписывать поле обычным текстом (p, span) вместо label Выглядит как подпись, но технически никак не связано с полем - клик не работает, программы чтения с экрана не свяжут их Использовать label с for/id или вложенностью
Использовать placeholder вместо label Подсказка пропадает при вводе текста, у неё низкий контраст, и не все программы чтения с экрана её озвучивают Всегда добавлять label, а placeholder использовать только как дополнительный пример формата
Забывать, что for и id должны совпадать буква в букву Если значения не совпадают, связь между label и полем просто не работает - визуально это незаметно Проверять, что for у label и id у поля - одна и та же строка

Шпаргалка

ТерминЗначение
labelПодписывает поле и по-настоящему связывает подпись с ним
for/idЯвный способ связи - значения должны совпадать
ВложенностьНеявный способ связи - поле находится прямо внутри label
placeholderПодсказка внутри поля, исчезает при вводе - не замена label

Коротко: отвечаем на вопросы

Может ли placeholder заменить label?

Нет. Исследование Nielsen Norman Group документирует конкретные проблемы: текст подсказки исчезает, как только пользователь начинает печатать, у него обычно слишком низкий контраст по умолчанию, и не все программы чтения с экрана его озвучивают. placeholder можно использовать как дополнение - но не вместо label.

Какие есть способы связать label с полем?

Два: явный - атрибут for у label со значением, совпадающим с id поля, и неявный - когда поле находится прямо внутри label. Оба способа валидны по спецификации и создают настоящую связь, а не просто визуальное соседство.

Что происходит при клике на label?

Связанное поле получает фокус, а для чекбоксов и радиокнопок - переключается. Это настоящее, документированное поведение браузера, а не просто условность вёрстки - оно особенно полезно людям с моторными нарушениями, которым проще попасть кликом по большой подписи, чем по маленькому квадратику.

Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×