【问题标题】:Why not allow the href attribute in tags other than the anchor? - EG: <h1 href=""></h1>为什么不允许在锚点以外的标签中使用 href 属性? - 例如:<h1 href=""></h1>
【发布时间】:2014-10-18 18:31:39
【问题描述】:

我刚刚经历了一个我当前的项目,并在不需要的地方删除了多余的 html 和 css,例如删除了不需要 div 的对象周围的 div,我想知道,为什么我们需要围绕所有内容的 achors:

<a href="Cake">
    <div>
        <p>This is not a lie.</p>
    </div>
</a>

为什么不允许简单地允许:

<div href="Cake">
    <p>This is not a lie.</p>
</div>

【问题讨论】:

  • 一句话?语义。
  • @ialarmedalien:它们做的事情非常不同……
  • 是的,这是必要的。否则,您可以将您的论点扩展到极端,并说为什么不只有一个元素 &lt;element&gt; 并允许其上的所有属性和属性?
  • @j08691 这将使编写验证器变得更加容易! ;)
  • 作为 j08691 为什么要使用 P, H1, ASIDE ?而不仅仅是 。因为它不可读。看到“A”就知道是超链接,看到H1就知道是Header

标签: html w3c-validation


【解决方案1】:

我在这里过于简化了,但它是关于概念的。

在 HTML 中,每个标签都有其含义和功能。有时是纯粹的美学(&lt;b&gt;,粗体文本),有时是语义(&lt;span&gt;,一个新的内联文本块),有时两者兼而有之(&lt;h1&gt;,标题从这里开始)。重点是用语义标记部分文本。

&lt;a&gt; 标签是一个超链接。 &lt;a&gt;&lt;/a&gt; 之间的几乎所有内容都应该是这样的:如果单击,则跳转到某个 URL。现在该 URL 是 &lt;a&gt; 标记的属性,您可以通过 href 指定它。

这个href&lt;a&gt; 标签之外没有任何意义,因为早在 HTML 诞生的时候,CSS 和 JavaScript 还不存在,所以你不能像我们一样让 &lt;span&gt; 可点击今天。但即使在今天,允许元素采用其他元素的功能也是没有意义的,因为这会污染它们的语义

在您的第二个示例中,您已完全删除 &lt;a&gt; 标记,因此它不再是链接。即使解析器允许div 上的href,突然让它表现得像a 标记也是错误的,因为它不是。

【讨论】:

  • 我们的许多客户喜欢右键单击链接并在第二个监视器中的新选项卡/窗口中打开。我们还希望整个行都可以单击以打开记录(特别是如果自定义列布局省略了带有任何锚标记的列)。一个很好的解决方案是支持其他标签(如 TR 或 DIV)上的 href 属性。但是为了同时支持右键打开和可点击的行,你必须跳过很多圈。尤其是当您想即时更改这些链接时。
  • 您找到解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多