Semi Design 锚点组件(Anchor)使用指南

Semi Design 锚点组件(Anchor)使用指南

【免费下载链接】semi-design 🚀A modern, comprehensive, flexible design system and React UI library. 🎨 Provide more than 2800+ Design Tokens, easy to build your design system. Make Semi Design to Any Design. 🧑🏻‍💻 Design to Code in one click 【免费下载链接】semi-design 项目地址: https://gitcode.com/gh_mirrors/se/semi-design

什么是锚点组件

锚点组件(Anchor)是一种常见的页面导航辅助工具,它能够快速定位到页面特定位置。在Semi Design中,Anchor组件提供了丰富的定制选项,可以帮助开发者轻松实现页面内部导航功能。

基础用法

组件引入

首先需要引入Anchor组件:

import { Anchor } from '@douyinfe/semi-ui';

基本示例

最简单的Anchor使用方式是创建一个包含多个Link的导航列表:

<Anchor>
    <Anchor.Link href="#基本示例" title="基本示例" />
    <Anchor.Link href="#组件" title="组件" />
    <Anchor.Link href="#设计语言" title="设计语言" />
</Anchor>

每个Link的href属性对应页面中元素的id,点击时会平滑滚动到对应位置。

高级功能

容器与定位控制

Anchor组件提供了多种定位和容器控制选项:

  1. 滚动容器:通过getContainer可以设置滚动内容的容器,默认为window对象
  2. 偏移距离offsetTop设置触发Link切换的偏移量
  3. 目标偏移targetOffset设置滚动结束后锚点距离顶部的距离
  4. 自定义样式:通过style对象可以完全控制Anchor的定位方式
<Anchor
    getContainer={() => document.querySelector('.content-container')}
    offsetTop={100}
    targetOffset={100}
    style={{ position: 'fixed', right: '20px', top: '100px' }}
>
    {/* Links */}
</Anchor>

尺寸控制

Anchor组件提供两种尺寸选择:

  • default:默认尺寸
  • small:紧凑尺寸
<Anchor size="small">
    {/* 小型锚点链接 */}
</Anchor>

滑轨主题

滑轨(rail)是Anchor组件左侧的指示条,支持三种主题色:

  • primary:主色(默认)
  • tertiary:第三色
  • muted:柔和色
<Anchor railTheme="tertiary">
    {/* 链接列表 */}
</Anchor>

动态展示

通过autoCollapse属性可以控制子级锚点的显示方式:

  • true:自动折叠,只显示当前激活的部分
  • false:始终显示所有层级(默认)
<Anchor autoCollapse={true}>
    <Anchor.Link href="#父级" title="父级">
        <Anchor.Link href="#子级1" title="子级1" />
        <Anchor.Link href="#子级2" title="子级2" />
    </Anchor.Link>
</Anchor>

工具提示

当链接文字过长时,可以启用工具提示功能:

  1. 基本工具提示showTooltip={true}
  2. 自定义位置:通过position设置提示位置
<Anchor 
    showTooltip={true}
    position="right"
>
    <Anchor.Link href="#长标题" title="这是一个非常非常长的锚点标题" />
</Anchor>

API详解

Anchor Props

属性说明类型默认值
autoCollapse是否自动折叠子锚点booleanfalse
getContainer滚动容器获取函数() => HTMLElementwindow
offsetTop触发偏移量number0
railTheme滑轨主题'primary'|'tertiary'|'muted''primary'
size尺寸'small'|'default''default'
targetOffset目标偏移量number0
showTooltip是否显示工具提示booleanfalse

Anchor.Link Props

属性说明类型默认值
href目标锚点IDstring-
title显示文本string|ReactNode-
disabled是否禁用booleanfalse

最佳实践

  1. 文案规范:保持锚点标题简洁明了,使用句子大小写
  2. 层级控制:合理组织锚点层级,避免嵌套过深
  3. 响应式考虑:在小屏幕设备上考虑使用更紧凑的布局
  4. 性能优化:对于长文档,考虑使用虚拟滚动技术

常见问题

Q: 锚点点击后没有高亮效果?

A: 请检查:

  1. 目标元素是否存在且具有正确的id
  2. 滚动容器设置是否正确
  3. 是否在正确的滚动范围内

Q: 如何实现固定位置的锚点导航?

A: 使用style属性设置固定定位,并确保getContainer指向正确的滚动容器:

<Anchor 
    style={{ position: 'fixed', right: 20, top: 100 }}
    getContainer={() => document.querySelector('.main-content')}
>
    {/* 链接 */}
</Anchor>

通过掌握这些功能和技巧,你可以利用Semi Design的Anchor组件为长文档或复杂页面创建高效、美观的导航系统。

【免费下载链接】semi-design 🚀A modern, comprehensive, flexible design system and React UI library. 🎨 Provide more than 2800+ Design Tokens, easy to build your design system. Make Semi Design to Any Design. 🧑🏻‍💻 Design to Code in one click 【免费下载链接】semi-design 项目地址: https://gitcode.com/gh_mirrors/se/semi-design

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值