我的网络应用程序使用了许多用于编写脚本的<a href="#">Perform client script action</a>
锚点链接(这是我10年前作为Dreamweaver用户使用的习惯)现在我开始质疑如果有必要的话。
我实际上并不知道为什么<a href="#">
首先被使用 - 我的猜测是href
属性的存在会导致浏览器应用:link
和{{1} psuedo-classes简化了样式表。它还使浏览器隐式应用可能需要的:visited
属性。
我使用jQuery(在与MooTools短暂合作之后)并且链接也可以在没有cursor: pointer
属性和值的情况下工作,因此我应该完全删除该属性并修改我的样式表以补偿删除href="#"
psuedo-class?还有什么我可能会遗漏的,href属性嵌入锚元素的任何一种半文档的伏都教?
答案 0 :(得分:77)
<a>
代表锚如果在[href]
元素上包含<a>
属性,则它是指向某个位置的锚点,这意味着您可以转到新页面,即当前页面的特定片段(因此#
被称为片段标识符),或新页面的特定片段。
<a>
属性的 [href]
元素被赋予[name]
属性,该属性可用作片段标识符的目标。浏览器后来添加了对链接到任何项目的[id]
属性的支持,现在这是链接到文档片段的首选方法。
<a>
元素意味着什么? a[href]
元素是链接(这就是它们与css中的:link
匹配的原因)。 链接是可点击的。 An a
element without the [href]
attribute is otherwise just a placeholder for where a link might otherwise have been placed,不可点击,也不在页面的标签顺序中。
如果您希望您的链接可以通过键盘导航,这对于辅助功能非常重要(WAI-ARIA),则需要执行以下操作之一:
<button type="button">
[href]
属性[tabindex="0"]
以及[role="button"]
或[role="link"]
之一(可能还有一些样式)有关[role]
属性的更多信息,请参见the Roles Model section的WAI-ARIA docs。
如果您没有理由保留[href]
属性,那么您可能也在使用<button>
元素:
<button type="button">
^^^^^^^^^^^^^
[type]
属性用于将元素设为通用按钮,否则<button>
将默认为[type="submit"]
,这可能不合适,因为它可能会触发表单提交。
如果您不能使用<button>
(通常在内部标记必须包含<div>
时发生),您可以伪造<button>
使用:
<div role="button" tabindex="0">Some clickable text</div>
您需要为 Enter 和 Space 监听keypress
个事件并触发click
个事件。
如果您保留<a>
元素及其[href]
属性,则其值有多个选项。
E.x。
<a href="/some/location/for/users/without/js">
<a href="#document-fragment">
如果您需要为禁用JS的用户提供支持,您也可以将它们指向一个不使用JS执行等效功能的页面。
通过扩展,这还包括提供文档片段链接以链接到同一文档中的内容。例如,可切换区域可以标记为:
<a href="#more" class="toggleable">Read More</a>
<div id="more">Lorem ipsum dolor sit amet</div>
因此,使用JS可以折叠和扩展区域,如果没有JS,链接将使用户访问页面上的相应内容。
E.x。
<a href="#">
<a href="javascript:void(0)">
<a href="about:blank">
如果您在JavaScript中阻止了幕后的默认行为,并且您不支持禁用JS的用户,则可以使用“dud”href值来保持链接处于Tab键顺序并自动启用输入以触发click
事件。您应添加[role="button"]
,因为语义上<a>
标记不再用作链接,而是用作按钮。
<a href="#" role="button">Some clickable text</a>
答案 1 :(得分:8)
就我个人而言,我更喜欢使用href="javascript:void(null);"
,为浏览器提供一个不会破坏任何其他哈希值的href。
我注意到关于无href链接的唯一区别是浏览器默认情况下不会为它们加下划线,所以只需添加该样式即可,你应该很好。
答案 2 :(得分:0)
我正在为React实现HTML,CSS,JS模板,这一行代码非常适合我:
<a href={() => false}> Link </a>
答案 3 :(得分:0)
React js也有同样的问题。
Line 273: Links must not point to "#". Use a more descriptive href or use a button instead jsx-a11y/href-no-hash
像这样,以消除我曾经使用过的错误
之前:
<a
href="#"
className="banner-signup signup-btn envy-font-sans-bold"
onClick={(e) => this.gonext()}
>
NEXT
</a>
在href =“#”位置上使用href =“#/”
<a
href="#/"
className="banner-signup signup-btn envy-font-sans-bold"
onClick={(e) => this.gonext()}
>
NEXT
</a>
答案 4 :(得分:-1)
不知道任何伏都教,但如果你在页面上有很多链接并且你拉了href,那么你将不得不添加一个类名,以便为每个提供蓝色和下划线。换句话说,为什么当浏览器全部准备好照顾或它时,引入更多的工作。所以简而言之,坚持你所知道的,我怀疑如果你删除了href页面将无法验证http://validator.w3.org/
答案 5 :(得分:-1)
我有这个问题,特别需要手风琴标题是<a>
,以便它可以被标签但不能点击。如果没有href,这将无法工作,所以我在&#34;#&#34;之后放了一个id的文本。在href,它似乎工作。它使链接可用于标签,但无法点击。
<a href="#${accordionGroup.id}"> Title </a>
输出为:
<a href="#acc234923"> Title </a>
答案 6 :(得分:-1)
在html中使用
<a id="calendar" href="javascript:void(0)">
<div class="icon-w">
<div class="fa fa-calendar"></div>
</div>
<span>Calendar</span>
</a>