Обычно это делается с целью расширения поверхности управления вводом. Когда есть переключатель или флажок, все, что находится внутри
, задействует управление.
Хорошо, еще раз: теперь поверхности управления отображаются серым цветом (если ваш CSS не отключен). Если вы хотите, чтобы элемент управления был чувствителен к щелчкам с обеих сторон элемента управления, заключите
между тегами меток
, если достаточно, чтобы одна сторона элемента управления была чувствительна к щелчку, поместите теги
до или после <вход>
. В следующем примере: первые 2 элемента управления чувствительны к щелчкам с обеих сторон (включая пробелы слева) элемента управления, третий - только для левой стороны.
Проверьте этот пример:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>Visual Label example</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style>
.control
{
background-color:#ddd
}
</style>
</head>
<body>
<form action="" method="post" name="f1">
<label class="control" for="id_1">1.
<input checked="checked" name="check" id="id_1" value="1" type="checkbox">One
</label>
<br />
<label class="control" for="id_2">2.
<input name="check" id="id_2" value="2" type="checkbox">Two
</label>
<br />
<label class="control" for="id_3">3. </label>
<input name="check" id="id_3" value="3" type="checkbox">Three
</form>
</body>
</html>
Помещение ввода внутри метки связывает их. Это важно для доступности (например, программы чтения с экрана для людей, которые не видят взаимосвязь между меткой и вводом, глядя на страницу). Альтернативой является использование атрибута для
в теге метки.
Это соответствует спецификации и работает во всех современных браузерах (но не в IE6 - щелчок по метке не установит фокус на элемент ввода, если вы не включите id
и for
):
<label>
Name: <input type="textbox" name="firstName" />
</label>
Что касается "почему" - в радиокнопки были помещены в метки, чтобы не было некликабельного промежутка между меткой и ее радиокнопкой.
Сегодня я нашел ответ здесь. http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H44.html
Спецификации HTML и XHTML допускают как неявные, так и явные метки. Однако некоторые вспомогательные технологии некорректно обрабатывают неявные метки (например, Имя ). Например
).
Таким образом, явный вариант - это то, что нужно, и он также дает нам больше вариантов стиля.