我知道我们使用<a>
制作超链接。
但我不知道,为什么我们使用<a>
,为什么不能只将href
添加到<div>
,所以这就成了一个超链接?
当然,我可以用javascript做到这一点,但我对这个理论感到好奇,也许还有一些有趣的论据。
答案 0 :(得分:1)
我认为这是一个非常棘手的问题。对于一个有些合理的答案,最好的方法可能是关注为什么不可能如所描述的那样可能。
首先,我们讨论的是HTML,即超文本标记语言。让我们将其视为资源的描述语言。考虑到其历史,我们还假设,就资源而言,我们正在讨论简单的文本文档。
所以现在有一些非常基本的概念可以在语义上描述这样一个文档,比如&#34;这是一个标题&#34; (h1),&#34;这是一段&#34; (p),&#34;这是一个列表&#34; (李)等等。
其中一个概念是用于引用其他资源的链接。有几种类型的链接,例如: G。用于引用样式表(链接),图像(img)或其他文档(表单)。
a-element在语义上(!)绑定到此概念,表示/描述两个资源之间的关系。所以你从源到目的地抛锚,也许描述这种关系。这就像在UML图中的2个实体之间画一条线并描述它们之间的关系。
因此,<p>
和<a>
元素描述了完全不同的概念。一个在文本中声明一个段落,另一个描述资源之间的关系。
那么,从语义的角度来看,<p href="other-page.html">Some Text</p>
之类的意思是什么?文本中的段落链接到另一个资源......?该段描述了资源之间的关系?这甚至有意义吗?在一本真实的书中,就像第1页上的段落所说的那样,嘿,我和第123页有关。&#34;。但是它不再是段落了,而是对关系的描述 - 我们已经通过<a>
标签实现了这个概念。
它基本上就像说
<p>
<a href="other-page.html">
I'll just put the whole relationship description in a paragraph.
</a>
</p>
重点是什么?段落是段落,链接描述是链接描述。一个段落可能包含一个链接,但不仅仅包含一个链接,因为从语义角度来看这没有多大意义。
但现在让我们回到未来。如今,我们正在处理更复杂的文档,并且更多地关注UI以及如何使其看起来漂亮而不是语义。只要它看起来不错,我们(大多数情况下)都不关心文本是否包含在p
,div
,article
或span
中元素 - 毕竟,它只是一个描述,在大多数情况下,我们只需要从CSS或JS中引用一些东西。
所以人类不关心标记,但计算机会这样做。相同的语义仍然是正确的,它们是像谷歌机器人这样的计算机找出他们正在处理的文档的哪个部分以及如何处理它的唯一方法(例如:&#34;嘿,这是一个文章,这可能是最重要的部分&#34;或者#34;它只是页脚,不介意重复内容&#34;)。
在早期,没有办法'#34; style&#34;元素,所以在不同的用户代理中可能看起来有点不同。用户代理只知道:&#34;好的,这是一个标题,让我们大胆一点,然后稍微增加字体大小&#34;。
所以每个元素都有它自己的目的和分离的关注点。当你尝试合并它们时,不仅你必须结合两者的属性(重复的属性,浏览器中的不同处理,......),你还必须描述它的含义。你可能会发现它没有任何意义。
我希望至少这个答案确实有意义,并且它以某种方式回答了你的问题。