我在文档中看到了这种模式:
<input type="checkbox" id="foo" /><label for="foo">Foo!</label>
但问题是,它在复选框和它的标签之间留下了一个死区,您可以单击标签,也可以单击复选框,但两者之间存在一点间隙,单击不会执行任何操作,这有点烦人。
显然,如果输入和标签标签之间有任何空格,情况会变得更糟。
为了修复这个问题我尝试了这个:
<label for="foo"><input type="checkbox" id="foo" />Foo!</label>
这对我来说很有效,因为它消除了框和文本之间的死角,并且更容易交互。但它是合法且惯用的 HTML 吗?
根据HTML标准,答案是肯定的。
此外,如果标记元素()是该元素的子元素,则可能不需要提供
for
该属性。label
input
label
我提供的链接提供了更多您可能感兴趣的示例和信息:https ://html.spec.whatwg.org/multipage/forms.html#the-label-element
是的,这是有效的。
而且通过这种方式您不需要使用
id
属性。例子:
事实上,我之前见过我的队友多次这样做,而且效果很好。但在我看来,你可以通过使用 CSS 为输入和标签设置样式来消除间隙。尝试用 form-group div 包裹输入和标签,将其显示为弹性框,将间隙设置为 0,并使用 padding 而不是 margin 在输入和标签之间添加间距
(这里是我从上面的文档链接复制的代码,添加了一个类名
form-group
)