8

当我在锚标记内编写 html 代码时,我的 Dreamweaver 编辑器在锚标记中显示错误。不应该使用内部标签吗?是否有任何规则编写/使用标签?

我正在使用 Html 5。这是我的代码。http://jsfiddle.net/CfPnj/

4

6 回答 6

9

在 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是内联元素)。
希望这可以帮助!

于 2012-06-08T09:19:13.323 回答
5

<ul>是一个块元素标签,并且<a>是一个内联元素标签 - 块元素标签不应该进入内联元素标签,只能反过来(或其他内联元素标签内的内联元素标签)......

从这里开始,然后用谷歌搜索更多信息:http: //line25.com/articles/10-html-tag-crimes-you-really-shouldnt-commit

于 2012-06-08T09:13:51.433 回答
1

一般来说,内联元素只允许其他内联元素作为子元素。如果您检查HTML 4.01 Doctype Definition,您会发现标签确实是这种情况<a>(第 342 行)。您的 IDE 将<ul>标签内的<a>标签标记为无效是正确的,尽管大多数浏览器仍然会“做正确的事”。

于 2012-06-08T09:13:22.707 回答
1

你是否试图做这样的事情:

<a href="google.com">
    <ul>
        <li>Google.com</li>
        <li>Gmail.com</li>
    </ul>
</a>​

根据 HTML 规则,它在语法上是正确的,因为 HTML 不显示任何error内容,因此它会像bug在您的 Dreamweaver 中一样显示。

它会播种这样的东西:

- Google.com
- Gmail.com

但两个链接的位置相同google.com

我以为你正在尝试做这样的事情:

<ul>
    <li><a href="google.com">Google.com</a></li>
    <li><a href="stackoverflow.com">stackoverflow.com</a></li>
</ul>

它将呈现为:

那是没有任何错误..

于 2012-06-08T09:22:35.200 回答
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>

但这样做在语义上(对我来说)感觉不对:-)

查看规范 a<ul> 是允许的, 其中预期流内容并被<a> 归类流内容

于 2012-06-08T09:18:50.040 回答
0

您不必将代码放在锚链接中,因为当您单击链接时,您将被重定向到锚的顶部,因此您不需要将所有代码都写在<a>

于 2012-06-08T09:07:23.450 回答