【发布时间】:2018-02-05 21:10:12
【问题描述】:
我正在制作一个冗长的表单,其中包含用户可以检查多个答案的问题。基本代码如下(我使用 Semantic UI 进行基本样式设置):
<form class="ui form new-form" action="#" method="get">
<div class="ui form">
<label>What fruits do you like?</label>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" tabindex="0" name="fruits" value="apples">
<label>apples</label>
</div>
</div>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" tabindex="0" name="fruits" value="bananas">
<label>bananas</label>
</div>
</div>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" tabindex="0" name="fruits" value="dylan-carty">
<label>pears</label>
</div>
</div>
</div>
</form>
我想使用 for/id for accessibility reasons 应用我的标签。
在这种情况下,顶部标签(“你喜欢什么水果?”)指的是整个复选框。如果这是一个选择/选项集,我知道您会将 ID 应用于包含 <select> 标记。我看到有三种可能的解决方案。
- 将所有复选框放入
<div>,并为其赋予与“你喜欢什么水果?”中for值相同的ID标签。给每个复选框标签一个与其输入相匹配的 ID。这留下了 Semantic UI 现有的复选框样式,但我不知道它是语义。 - 将所有复选框放入
<fieldset>标签中,并为其赋予与“你喜欢什么水果?”中for值相同的ID标签。给每个复选框标签一个与其输入相匹配的 ID。这对我来说似乎更具语义性,但由于语义 UI 为<fieldset>提供了一种样式,因此我需要覆盖该样式。 - 包装“你喜欢什么水果?”整个复选框周围的标签,如方法1here所示。
研究:
- 搜索了包含“多个复选框”的问题,但大多数处理的是每个复选框都是不同的、不属于较大组的一部分或如何选择它们的情况
- 一般搜索“最佳实践复选框组 id”并确实提出了this,这表明将
<legend>放入<fieldset>中。但是,我不希望将<label>用于我的所有其他输入,而仅将<legend>标记用于复选框组。
在这种情况下是否存在普遍接受的“最佳实践”?
【问题讨论】:
-
在语义方面没有最佳实践,但您似乎走在正确的轨道上,请继续阅读 - w3.org/WAI/tutorials/forms
标签: html label forms semantic-markup