将 li 包裹在 a 中是否合法?
Is it legal to wrap li in a?
我有点难以理解这里的文档:http://w3c.github.io/html-reference/terminology.html#transparent which is linked to from here: http://w3c.github.io/html-reference/a.html#a-changes
据我了解,下面的代码应该没问题:
<!doctype html>
<head><title>Yo!</title>
<body>
<ul>
<a>
<li>My list item is wrapped in an anchor.
</a>
</ul>
但是当我将这段代码粘贴到不同的验证器中时,他们都同意不能像这样将 li 元素包装在 a 元素中。我是不是读错了文档,还是我发现的所有验证器都过时了?
合法 是的,没有人会因此将您送进监狱。 - 合法吗? 没有!
Permitted parent elements
如评论中所述,某些浏览器会显示无效 HTML,但验证器会始终警告您无效代码。
首先,您没有使用 HTML 规范。 http://w3c.github.io/html-reference/ 只是一个“non-normative 参考”,并且已经过时(这是 2012 年的草稿)。
HTML5 规范(目前是最新的 HTML W3C 推荐标准)是 https://www.w3.org/TR/2014/REC-html5-20141028/. HTML 5.1 is currently a Candidate Recommendation(可能很快就会成为 W3C 推荐标准)。
以下链接指向 HTML5 W3C 推荐标准。
a
element is transparent 的内容模型。内容模型解释了 a
元素可能包含的其他元素。在 transparent 的情况下,这意味着将使用 parent 元素的内容模型。但是内容模型没有说明 a
元素可能出现的位置。¹
"contexts in which this element can be used"² 列出元素可能出现的位置。在 a
的情况下,它是:
Where phrasing content is expected.
因此您可以在任何允许使用文本、abbr
、span
等的地方使用 a
。请注意,此处未列出 li
元素(li
不是措辞内容)。
查看 ul
element 的内容模型:它只允许 li
和 "script-supporting" 元素(而不是 a
)。
¹ 当然,除了嵌套在 a
元素中的 a
元素。但这是明确不允许的:"there must be no interactive content descendant".
² 此清单是 non-normative(仅为方便起见而提供)。您可以通过检查每个可能的 parent 内容模型来查看规范上下文。
我有点难以理解这里的文档:http://w3c.github.io/html-reference/terminology.html#transparent which is linked to from here: http://w3c.github.io/html-reference/a.html#a-changes
据我了解,下面的代码应该没问题:
<!doctype html>
<head><title>Yo!</title>
<body>
<ul>
<a>
<li>My list item is wrapped in an anchor.
</a>
</ul>
但是当我将这段代码粘贴到不同的验证器中时,他们都同意不能像这样将 li 元素包装在 a 元素中。我是不是读错了文档,还是我发现的所有验证器都过时了?
合法 是的,没有人会因此将您送进监狱。 - 合法吗? 没有!
Permitted parent elements
如评论中所述,某些浏览器会显示无效 HTML,但验证器会始终警告您无效代码。
首先,您没有使用 HTML 规范。 http://w3c.github.io/html-reference/ 只是一个“non-normative 参考”,并且已经过时(这是 2012 年的草稿)。
HTML5 规范(目前是最新的 HTML W3C 推荐标准)是 https://www.w3.org/TR/2014/REC-html5-20141028/. HTML 5.1 is currently a Candidate Recommendation(可能很快就会成为 W3C 推荐标准)。
以下链接指向 HTML5 W3C 推荐标准。
a
element is transparent 的内容模型。内容模型解释了 a
元素可能包含的其他元素。在 transparent 的情况下,这意味着将使用 parent 元素的内容模型。但是内容模型没有说明 a
元素可能出现的位置。¹
"contexts in which this element can be used"² 列出元素可能出现的位置。在 a
的情况下,它是:
Where phrasing content is expected.
因此您可以在任何允许使用文本、abbr
、span
等的地方使用 a
。请注意,此处未列出 li
元素(li
不是措辞内容)。
查看 ul
element 的内容模型:它只允许 li
和 "script-supporting" 元素(而不是 a
)。
¹ 当然,除了嵌套在 a
元素中的 a
元素。但这是明确不允许的:"there must be no interactive content descendant".
² 此清单是 non-normative(仅为方便起见而提供)。您可以通过检查每个可能的 parent 内容模型来查看规范上下文。