为什么不允许除锚之外的标签中的href属性? - EG:<h1 href =""> </ h1>

Air*_*bat 6 html w3c-validation

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

<a href="Cake">
    <div>
        <p>This is not a lie.</p>
    </div>
</a>
Run Code Online (Sandbox Code Playgroud)

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

<div href="Cake">
    <p>This is not a lie.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

Dar*_*ust 7

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

在HTML中,每个标签都有一个含义和功能.有时它纯粹是美学(<b>粗体文本),有时它是语义(<span>,一大块内联文本),有时两者(<h1>,标题从这里开始).关键是用语义标记文本部分.

<a>标签是一个超链接.几乎所有<a>和之间的一切都</a>应该像这样:如果点击,跳转到某个URL.现在该URL是<a>标记的属性,您可以通过它指定它href.

href<a>标签之外没有任何意义,因为当HTML诞生时,CSS和JavaScript不存在,所以你不能<span>像我们今天那样做一个可点击的东西.但即使在今天,允许元素采用其他元素的功能也没有意义,因为它会污染它们的语义.

在第二个示例中,您已完全删除了<a>标记,因此它不再是链接.即使解析器允许href使用div,但突然使其表现得像a标签一样是错误的,因为它不是.

  • 很多客户喜欢右键单击链接并在第二个显示器的新选项卡/窗口中打开.我们还希望整个行可以单击以打开记录(特别是如果自定义列布局省略了包含任何锚标记的列).一个很好的解决方案是支持其他标签上的href属性,例如TR或DIV.但是为了同时支持右键单击打开和可单击的行,你必须跳过很多箍.特别是当您想要动态更改这些链接时. (2认同)