我正在敲打我的html5 / css3上的灰尘并遇到让我惊讶的事情。这里有两个来自竞争文档的例子。
这两种形成输入/标签组的方式之间的可维护性/设计等是否有益处,尤其是在HTML5中的Windows应用商店应用中?如果这个问题不能简洁地回答,请告诉我,并且可能只是通过意见来辩论,所以我可以提出问题。
所以来自MS Docs;
<label class="a-label-class">
<input id="option1" type="checkbox" class="a-input-class" />
Option 1
</label>
来自其他文档;
<div>
<input id="option1" class="a-input-class" name="option1" type="checkbox"/>
<label for="option1" class="a-label-class">Option 1</label>
</div>
第一个例子是标记少一点。除了他们似乎完成同样的事情。然而,第二个示例使用for
,并且似乎使用div容器提供了更多的设计选项。
所以我的问题是,出于特定原因,技术上是一种更好的做法吗?如果有更好的方法有什么好处?谢谢!
答案 0 :(得分:1)
这两种方法都被接纳并且在语义角色上非常等效。 第一种分层方式与第二种DOM的元素组织一致,更具表现力和简洁性。 无论如何,如果有用,下面是来自最权威的来源之一
来自 的 HTML 生活标准 - 最后更新7月20日
label元素表示用户界面中的标题。该 标题可以与特定的表单控件相关联,称为 label元素的标记控件,使用for属性或by 将表单控件放在label元素中。
除以下规则另有规定外,还有标签 元素没有标记控制。
可以指定for属性以指示表单控件 哪个标题是关联的。如果指定了属性, 属性的值必须是。中可标记元素的ID 与标签元素相同的文档。如果指定了属性并且 Document中有一个元素,其ID等于 for属性,第一个这样的元素是一个可标记的元素, 然后该元素是标签元素的标记控件。
如果未指定for属性,但label元素有 labelable元素后代,然后树中的第一个这样的后代 order是标签元素的标记控件。