<label id="label1" for="txtTextBox">
如果我在其中加入for
属性,label1会产生什么影响?
<label id="label1" for="txtTextBox">
如果我在其中加入for
属性,label1会产生什么影响?
它允许你创建一个标签,附加到 DOM 中的特定元素。当该标签接收到鼠标按下事件时,它会将焦点设置到它所附加的元素上。
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
当用户单击“用户名:”文本时,它将聚焦在文本框上。这对于无障碍性也很有好处,因为屏幕阅读器会先读取标签的内部HTML,然后再读取输入字段,而不管它们在DOM中出现的物理顺序如何。它指的是表单元素(input、select、textarea、option等)的id属性(而不是name属性!)。这意味着使用for属性可以让用户点击标签,自动聚焦到相关的表单元素。
for
属性的主要优点是,与将控件放在看起来实际上HTML5规范定义了两种使用<label>标签的方式,所有主要浏览器都支持将可点击区域扩展到标签并聚焦控件。
a)控件嵌套在标签内
b)标签通过for和id属性链接到控件
<!-- Method a: nested -->
<p>
<label>
Username1:
<input type="text" id="name_user" name="nameuser" />
</label>
</p>
<!-- Method b: linked -->
<p>
<label for="user_name">Username2: </label>
<input type="text" id="user_name" name="username" />
</p>
https://dev.w3.org/html5/spec-preview/the-label-element.html#attr-label-for
其中之一的好处是单击标签将使输入元素获得焦点,
在复选框或单选按钮的情况下,单击标签将选中该复选框/单选按钮,但它不包括标签内容和复选框/单选按钮之间的空格。
<input type="radio" name="gender" id="male" value="male">
<label for="male">Male</label>
<input type="radio" name="gender" id="female" value="female">
<label for="female">Female</label>
你可以通过这样做来实现相同的效果: <label><input type="radio" name="gender" id="male" value="male"> Male </label>
<label><input type="radio" name="gender" id="female" value="female"> Female</label>
但这种做法是有争议的,我更喜欢第二种方式用于复选框/单选按钮,因为它还包括标签和复选框/单选按钮之间的空间。