Ответ 1
Да, поместите ввод внутри метки.
<label><input type=checkbox name=chkbx1> Label here</label>
См. неявная ассоциация ярлыков в спецификациях HTML.
Я знаю, что иногда бывает полезно связать метку с помощью флажка:
<input id="something" type="checkbox" value="somevalue" />
<label for="something">this is label text</label>
.. но мне нужно использовать идентификатор, чтобы связать его?
Основная причина, по которой мне все равно, - это то, что мне нравится нажимать метку, чтобы переключать значение флажка, но мне не нравится идея использовать id для чего-то такого простого.
Я думаю, я мог бы использовать jQuery для переключения предыдущего элемента (флажок) щелкнутой метки, но, возможно, есть что-то более простое, чего я не вижу. qaru.site/info/90426/... выглядел как решение, но пользователь сказал, что он не работает в IE.
Да, поместите ввод внутри метки.
<label><input type=checkbox name=chkbx1> Label here</label>
См. неявная ассоциация ярлыков в спецификациях HTML.
Демо: JsFiddle
.c-custom-checkbox {
padding-left: 20px;
position: relative;
cursor: pointer;
}
.c-custom-checkbox input[type=checkbox] {
position: absolute;
opacity: 0;
overflow: hidden;
clip: rect(0 0 0 0);
height: 15px;
width: 15px;
padding: 0;
border: 0;
left: 0;
}
.c-custom-checkbox .c-custom-checkbox__img {
display: inline;
position: absolute;
left: 0;
width: 15px;
height: 15px;
background-image: none;
background-color: #fff;
color: #000;
border: 1px solid #333;
border-radius: 3px;
cursor: pointer;
}
.c-custom-checkbox input[type=checkbox]:checked + .c-custom-checkbox__img {
background-position: 0 0;
background-color: tomato;
}
<label class="c-custom-checkbox">
<input type="checkbox" id="valueCheck" />
<i class="c-custom-checkbox__img"></i>Some Label
</label>
<label for="something">this is label text</label>
<input id="something" type="checkbox" value="somevalue" />
Фактически атрибут for использовался для чтения с экрана для инвалидов, поэтому не полезно для доступности для записи без атрибута