关于超链接:
锚标签的主要用途——<a></a>
- 是作为超链接 http://www.w3.org/MarkUp/html-spec/html-spec_7.html。这基本上意味着他们会带你去某个地方。超链接需要href
属性,因为它指定了一个位置。
Hash:
A hash - `#` within a hyperlink specifies an HTML element id to which the window should be scrolled.
href="#some-id"
将滚动到当前页面上的某个元素,例如<div id="some-id">
.
href="//site.example/#some-id"
会去site.example
并滚动到该页面上的 ID。
滚动到顶部:
href="#"
没有指定 id 名称,但有相应的位置 - 页面顶部。单击锚点href="#"
会将滚动位置移动到顶部。
请参阅此演示。 http://jsfiddle.net/yrmnmd1q/
这是根据的预期行为w3 文档。 http://www.w3.org/TR/html5/browsers.html#scroll-to-fragid
超链接占位符:
超链接占位符有意义的一个示例是在模板预览中。在模板的单页演示中,我经常看到<a href="#">
这样锚标记就是一个超链接,但不会去任何地方。为什么不离开href
财产空白?空白href
属性实际上是当前页面的超链接。换句话说,它会导致页面刷新。正如我所讨论的,href="#"
也是一个超链接,并导致滚动。因此,超链接占位符的最佳解决方案实际上是href="#!"
这里的想法是希望页面上没有带有以下内容的元素id="!"
(谁干的!?)因此,超链接没有提及任何内容 - 所以什么也没有发生。
关于锚标签:
您可能想知道的另一个问题是,“为什么不直接关闭 href 属性呢?”。我听到的一个常见的反应是href
属性是必需的,因此它“应该”存在于锚点上。这是错误的!这href
仅当锚点实际上是超链接时才需要属性!读这个来自w3 http://www.w3.org/html/wg/drafts/html/master/links.html#attr-hyperlink-href。那么,为什么不把它留给占位符呢?浏览器呈现元素的默认样式,并将更改不具有 href 属性的锚标记的默认样式。相反,它将被视为常规文本。它甚至改变了浏览器关于该元素的行为。当鼠标悬停在没有 href 属性的锚点上时,状态栏(屏幕底部)将不会显示。最好在锚点上使用占位符 href 值,以确保将其视为超链接。
看这个演示 http://jsfiddle.net/zpg537b3/展示风格和行为差异。