Что делает атрибут "для" в теге HTML <label>?
Интересно, в чем разница между следующими двумя фрагментами кода:
<label>Input here : </label>
<input type='text' name='theinput' id='theinput'/>
и
<label for='theinput'>Input here : </label>
<input type='text' name='theinput' id='theinput'/>
Я уверен, что он что-то делает, когда вы используете специальную библиотеку JavaScript, но помимо этого он проверяет HTML или требует по какой-то другой причине?
Ответы
Ответ 1
Тег <label>
позволяет вам щелкнуть по метке, и он будет обрабатываться как щелчок по соответствующему элементу ввода. Существует два способа создания этой ассоциации:
Сначала вы можете обернуть элемент метки вокруг элемента ввода:
<label>Input here:
<input type='text' name='theinput' id='theinput'>
</label>
Другой способ - использовать атрибут for
, указав ему идентификатор связанного ввода:
<label for="theinput">Input here:</label>
<input type='text' name='whatever' id='theinput'>
Это особенно полезно для использования с флажками и кнопками, поскольку это означает, что вы можете установить флажок, щелкнув соответствующий текст, вместо того, чтобы попасть в поле.
Подробнее об этом элементе читайте в MDN.
Ответ 2
Атрибут for
связывает метку с элементом управления, как определено в описании label
в спецификации HTML 4.01. Это подразумевает, в частности, что, когда элемент label
получает фокус (например, при нажатии на него), он переходит к соответствующему элементу управления. Связь между меткой и элементом управления также может использоваться пользовательскими агентами на основе речи, которые могут дать пользователю возможность спросить, что такое связанная метка, при работе с элементом управления. (Связь может быть не такой очевидной, как при визуальном рендеринге.)
Во втором примере в вопросе использование разметки label
не имеет логической или функциональной импликации - ее бесполезно, если вы не сделаете что-то с ней в CSS или JavaScript.
Спецификации HTML не делают обязательным связывать метки с элементами управления, но это делает рекомендации по доступности веб-контента (WCAG) 2.0. Это описано в техническом документе H44: использование элементов меток для связывания текстовых меток с элементами управления формами, что также объясняет, что неявная ассоциация (путем вложения, например, input
внутри label
) не так широко поддерживается как явная связь через атрибуты for
и id
,
Ответ 3
Вкратце, что он делает, это ссылка на id
на входе, что все:
<label for="the-id-of-the-input">Input here:</label>
<input type="text" name="the-name-of-input" id="the-id-of-the-input">
Ответ 4
Атрибут for тега <label>
должен быть равен атрибуту id связанного элемента для их объединения.