当我在锚标签内部编写html代码时,我的Dreamweaver编辑器显示了锚标记中的错误。不应该使用内部标签?是否有编写/使用标签的规则?
我使用的是Html 5.这是我的代码。 http://jsfiddle.net/CfPnj/
答案 0 :(得分:7)
在HTML5中,您可以放置块元素insize <a>
元素。见http://dev.w3.org/html5/markup/a.html#a-changes
这是HTML5中的新功能。在任何其他版本的HTML中,它都是非法的。
更新(稍后添加,当我更好地理解HTML5时)
这是因为<a>
的内容模型已从内联更改为透明。换句话说,你可以放在<a>
里面的东西现在和你在<a>
的父亲身上放的东西相同。这里问题的实际答案是“它取决于”
例如,
<div><a><ul><li></ul></a></div>
是完全有效的HTML5,而
<span><a><ul><li></ul></a></span>
不是(因为span
是内联元素)
希望这有帮助!
答案 1 :(得分:6)
<ul>
是一个块元素标记,而<a>
是一个内联元素标记 - 块元素标记应该永远不会进入内联元素标记,只是反过来(或其他内联元素标签内的内联元素标签)......
从这里开始,然后谷歌了解更多信息:http://line25.com/articles/10-html-tag-crimes-you-really-shouldnt-commit
答案 2 :(得分:1)
通常,内联元素仅允许其他内联元素作为子元素。如果您查看HTML 4.01 Doctype Definition,您会发现<a>
代码确实如此(第342行)。您的IDE将<ul>
标记内的<a>
标记标记为无效是正确的,但大多数浏览器仍会“做正确的事情”。
答案 3 :(得分:1)
你是否想要做这样的事情:
<a href="google.com">
<ul>
<li>Google.com</li>
<li>Gmail.com</li>
</ul>
</a>
根据HTML规则,它的语法正确,因为HTML没有显示任何error
因此它在您的Dreamweaver中显示为 bug
。
它会播种这样的东西:
但这两个链接的位置相同 google.com 。
我以为你正试图做这样的事情:
<ul>
<li><a href="google.com">Google.com</a></li>
<li><a href="stackoverflow.com">stackoverflow.com</a></li>
</ul>
它将呈现为:
那没有任何错误..
答案 4 :(得分:0)
您不必将代码放在锚链接中,因为当您单击链接时,您将被重定向到锚点的顶部,因此您不需要在<a>
中编写所有代码
答案 5 :(得分:0)
根据http://validator.w3.org,这在HTML5中有效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<a href="#"><ul><li>foo</li></ul></a>
</body>
</html>
但不是HTML4.1(严格)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>title</title>
</head>
<body>
<p>
<a href="#"><ul><li>foo</li></ul></a>
</p>
</body>
</html>
但是在语义上(对我来说)这样做感觉不对: - )
查看规范<ul>
is allowed 预期流内容和<a>
is categorized 流内容