跳转到内容

Links 链接

您可以通过链接(Links)组件,轻松的使用主题颜色和字体铸排的样式来自定义锚定元素。

链接(Links)组件是基于 文字铸排(Typography) 组件构建的,这意味着你也可以使用文字铸排组件的属性。

<Link href="#">Link</Link>
<Link href="#" color="inherit">
  {'color="inherit"'}
</Link>
<Link href="#" variant="body2">
  {'variant="body2"'}
</Link>

但是,链接组件与文字铸排组件相比,它们存在一些不同的默认属性:

  • 当链接需要突出显示时,设置 color="primary"
  • 在多数的情况下,当链接需要作为文字铸排的子组件使用,则设置 variant="inherit"

下划线

underline 属性可以用来设置下划线行为。 该属性的默认值是 hover

<Link href="#" underline="none">
  {'underline="none"'}
</Link>
<Link href="#" underline="hover">
  {'underline="hover"'}
</Link>
<Link href="#" underline="always">
  {'underline="always"'}
</Link>

安全性

当你将 target="_blank"和链接组件一起使用时,若想和第三方的内容相连,我们推荐始终配置 rel="noopener" 或者 rel="noreferrer"

  • rel="noopener" 会阻止新页面访问 window.opener 属性,并确保它在单独的进程运行。 若不如此,目标页面有极大可能将你的页面重定向至一个恶意网址。
  • rel ="noreferrer" 具有相同的效果,但它也提供阻止将 Referer 标头发送到新页面的功能。 ⚠️ 去除 referrer header 会影响分析。

Third-party routing library(第三方路由库)

One frequent use case is to perform navigation on the client only, without an HTTP round-trip to the server. 针对这种用法,Link 组件了提供 component 属性来适配它。 针对这种用法,Link 组件了提供 component 属性来适配它。 Here is a more detailed guide.

无障碍设计

(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#link)

  • 当提供链接对应的内容时,避免使用泛泛的描述,比如“点击这里”或“跳转”之类。 相反的,请使用 具体详细的描述说明。
  • 为了获得最佳的用户体验,链接应该从页面上的文字中脱颖而出。 For instance, you can keep the default underline="always" behavior.
  • If a link doesn't have a meaningful href, it should be rendered using a <button> element.
<Link
  component="button"
  variant="body2"
  onClick={() => {
    console.info("I'm a button.");
  }}
>
  Button Link
</Link>