提问人:jeff 提问时间:8/26/2013 最后编辑:SuperStormerjeff 更新时间:8/30/2022 访问量:238249
“for”属性在 HTML <label> 标签中有什么作用?
What does "for" attribute do in an HTML <label> tag?
问:
我想知道以下两个代码片段之间有什么区别:
<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 还是出于其他原因而需要的?
答:
标记的属性应等于相关元素的属性,以便将它们绑定在一起。for
<label>
id
评论
该标签允许您单击标签,它将被视为单击关联的输入元素。有两种方法可以创建此关联:<label>
一种方法是将 label 元素包裹在输入元素周围:
<label>Input here:
<input type='text' name='theinput' id='theinput'>
</label>
另一种方法是使用该属性,为其提供关联输入的 ID:for
<label for="theinput">Input here:</label>
<input type='text' name='whatever' id='theinput'>
这对于与复选框和按钮一起使用特别有用,因为这意味着您可以通过单击相关文本来选中该框,而不必点击框本身。
将文本与输入相关联对于辅助功能非常重要,因为它为输入提供了一个辅助名称,以便辅助技术可以将其提供给残障用户。当用户聚焦输入时,屏幕阅读器将读取标签文本。你也可以告诉你的语音命令软件集中输入,但它需要一个(可见的)名称。
评论
select
for
该属性将标签与控制元素相关联,如 HTML 4.01 规范中的标签
描述中所定义。这意味着,除其他外,当元素接收焦点时(例如,通过单击),它会将焦点传递到其关联的控件。标签和控件之间的关联也可以由基于语音的用户代理使用,这可能为用户提供了一种在处理控件时询问关联标签是什么的方法。(这种关联可能不像视觉渲染那样明显。for
label
在问题的第一个示例中(没有 ),标记的使用没有逻辑或功能意义——它是无用的,除非你在 CSS 或 JavaScript 中对它做一些事情。for
label
HTML 规范不强制要求将标签与控件相关联,但 Web 内容可访问性准则 (WCAG) 2.0 强制要求。这在技术文档 H44:使用标签元素将文本标签与表单控件关联中进行了描述,该文档还解释了隐式关联(通过嵌套,例如 inside ) 不像显式关联 via 和 属性那样得到广泛支持,input
label
for
id
评论
简而言之,它的作用是引用输入,仅此而已: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">
评论
该属性显示此标签代表相关输入字段、复选框或单选按钮或与之关联的任何其他数据输入字段。
例如for
<li>
<label>{translate:blindcopy}</label>
<a class="" href="#" title="{translate:savetemplate}" onclick="" ><i class="fa fa-list" class="button" ></i></a>  
<input type="text" id="BlindCopy" name="BlindCopy" class="splitblindcopy" />
</li>
它标记作为属性参数的任何输入。for
<input id='myInput' type='radio'>
<label for='myInput'>My 1st Radio Label</label>
<br>
<input id='input2' type='radio'>
<label for='input2'>My 2nd Radio Label</label>
<br>
<input id='input3' type='radio'>
<label for='input3'>My 3rd Radio Label</label>
以 html 形式使用label for=
这可以允许在视觉上分离标签和对象,同时保持它们的链接。
示例:有一个复选框和两个标签。
您可以通过冷漠地单击来选中/取消选中该框
- 任何标签或
- 在复选框上,
但不是在文本上,也不是在输入内容上......
<label for="demo1"> There is a label </label>
<br />
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis sem velit, ultrices et, fermentum auctor, rhoncus ut, ligula. Phasellus at purus sed purus cursus iaculis. Suspendisse fermentum. Pellentesque et arcu. Maecenas viverra. In consectetuer, lorem eu lobortis egestas, velit odio imperdiet eros, sit amet sagittis nunc mi ac neque. Sed non ipsum. Nullam venenatis gravida orci.
<br />
<label for="demo1"> There is a 2nd label </label>
<input id="demo1" type="checkbox">Demo 1</input>
一些有用的技巧
相同的示例,但有两个复选框和一些不同的 CSS 效果(例如在文本中写入:或反映复选框状态)。Select this
Deselect this
通过使用样式表功能,您可以做很多有趣的事情......CSS
body { background: #DDD; }
.button:before { content: 'S'; }
.box:before { content: '☐'; }
label.button { background: #BBB;
border-top: solid 2px white;border-left: solid 2px white;
border-right: solid 2px black;border-bottom: solid black 2px; }
#demo2:checked ~ .but2:before { content: 'Des'; }
#demo2:checked ~ .but2 { background: #CCC;
border-top: solid 2px black;border-left: solid 2px black;
border-right: solid 2px white;border-bottom: solid white 2px; }
#demo2:checked ~ .box2:before { content: '☒'; }
#demo1:checked ~ .but1 { background: #CCC;
border-top: solid 2px black;border-left: solid 2px black;
border-right: solid 2px white;border-bottom: solid white 2px; }
#demo1:checked ~ .but1:before { content: 'Des'; }
#demo1:checked ~ .box1:before { content: '☒'; }
<input id="demo1" type="checkbox">Demo 1</input>
<input id="demo2" type="checkbox">Demo 2</input>
<br />
<label for="demo1" class="button but1">elect 1</label> -
<label for="demo2" class="button but2">elect 2</label>
<br />
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis sem velit, ultrices et, fermentum auctor, rhoncus ut, ligula. Phasellus at purus sed purus cursus iaculis. Suspendisse fermentum. Pellentesque et arcu. Maecenas viverra. In consectetuer, lorem eu lobortis ...
<br />
<label for="demo1" class="but1 button">elect this 2nd label for box 1</label> -
<label class="but2 button" for="demo2">elect this other 2nd label for box 2</label>
<br /><br />
<label for="demo1" class="box box1"> check 1</label>
<label for="demo2" class="box2 box"> check 2</label>
使用示例:仅使用 CSS 切换侧边栏(第 2 个代码段)。
在这个答案中,我只使用 CSS 和 label for
来添加一个侧边栏,可以在不使用任何 javascript 代码的情况下切换。
评论
下一个:嘲讽界面与嘲讽?
评论