当我在锚标记内编写 html 代码时,我的 Dreamweaver 编辑器在锚标记中显示错误。不应该使用内部标签吗?是否有任何规则编写/使用标签?
6 回答
在 HTML5 中,您可以将块元素放入大小<a>
元素中。请参阅http://dev.w3.org/html5/markup/a.html#a-changes
这是 HTML5 中的新功能。在任何其他版本的 HTML 中,它都是非法的。
更新(稍后添加,当我更好地理解 HTML5 时)
这是因为<a>
的内容模型从内联更改为透明。换句话说,现在可以放入 an<a>
的内容与您可以放入<a>
的父级的内容相同。这里问题的实际答案是“这取决于”。
例如,
<div><a><ul><li></ul></a></div>
是完全有效的 HTML5,而
<span><a><ul><li></ul></a></span>
不是(因为span
是内联元素)。
希望这可以帮助!
<ul>
是一个块元素标签,并且<a>
是一个内联元素标签 - 块元素标签不应该进入内联元素标签,只能反过来(或其他内联元素标签内的内联元素标签)......
从这里开始,然后用谷歌搜索更多信息:http: //line25.com/articles/10-html-tag-crimes-you-really-shouldnt-commit
一般来说,内联元素只允许其他内联元素作为子元素。如果您检查HTML 4.01 Doctype Definition,您会发现标签确实是这种情况<a>
(第 342 行)。您的 IDE 将<ul>
标签内的<a>
标签标记为无效是正确的,尽管大多数浏览器仍然会“做正确的事”。
你是否试图做这样的事情:
<a href="google.com">
<ul>
<li>Google.com</li>
<li>Gmail.com</li>
</ul>
</a>
根据 HTML 规则,它在语法上是正确的,因为 HTML 不显示任何error
内容,因此它会像bug
在您的 Dreamweaver 中一样显示。
它会播种这样的东西:
但两个链接的位置相同google.com。
我以为你正在尝试做这样的事情:
<ul>
<li><a href="google.com">Google.com</a></li>
<li><a href="stackoverflow.com">stackoverflow.com</a></li>
</ul>
它将呈现为:
那是没有任何错误..
根据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>
但这样做在语义上(对我来说)感觉不对:-)
您不必将代码放在锚链接中,因为当您单击链接时,您将被重定向到锚的顶部,因此您不需要将所有代码都写在<a>