TUI

Anchor 锚点
用于页面内快速定位的锚点组件,支持自动高亮当前可见锚点、平滑滚动、响应式布局和暗黑模式。
基础用法
最简单的锚点用法,自动监听页面滚动并高亮当前锚点。

介绍

TsAnchor 是一个用于页面内快速定位的锚点组件,支持自动高亮当前可见的锚点。

当用户滚动页面时,组件会自动检测当前在视口中的锚点,并高亮显示对应的导航项。

特性

  • 自动检测滚动位置
  • 平滑滚动定位
  • 支持多个锚点同时可见
  • 防抖处理避免频繁切换

使用方法

只需传入锚点列表,组件会自动处理滚动监听和高亮逻辑。

import { TsAnchor } from 'tui';

const anchors = [
  { id: 'section1', title: '章节一' },
  { id: 'section2', title: '章节二' },
];

<TsAnchor :anchors="anchors" />

API

组件提供了简单的 props 接口,支持自定义锚点数据和暗黑模式。

介绍
特性
使用方法
API
示例代码
vue
暗黑模式
支持暗黑模式,通过 dark 属性控制。

暗黑主题

TsAnchor 支持暗黑模式,通过设置 dark 属性为 true 即可启用。

暗黑模式下,组件会自动调整文字颜色、背景色和边框色,以适应暗色背景。

暗黑模式特性

  • 自动适配暗色背景
  • 优化的对比度
  • 平滑的过渡动画
  • 保持交互一致性

使用方法

只需要在组件上添加 dark 属性:

<TsAnchor :anchors="anchors" :dark="true" />

自定义暗色

可以通过 CSS 变量进一步自定义暗黑模式的颜色:

:root[data-ts-theme='dark'] {
  --ts-color-primary: rgba(255, 255, 255, 0.88);
  --ts-color-blue: #1890ff;
}
暗黑主题
暗黑模式特性
使用方法
自定义暗色
示例代码
vue
自定义样式
可以通过 CSS 变量自定义锚点的颜色和样式。

自定义样式

可以通过 CSS 变量自定义 TsAnchor 的外观,包括颜色、间距、字体大小等。

自定义颜色

修改主题色变量来改变锚点的颜色:

.ts-anchor__item {
  --ts-color-blue: #ff6b35;
  color: var(--ts-color-blue);
}

.ts-anchor__item--active {
  border-left-color: var(--ts-color-blue);
  background: rgba(var(--ts-color-blue), 0.1);
}

自定义间距

调整锚点项的内边距和外边距:

.ts-anchor__item {
  padding: 8px 12px;
  margin-top: 6px;
}

.ts-anchor__wrap {
  gap: 12px;
}

自定义动画

修改过渡动画的持续时间和缓动函数:

.ts-anchor__item {
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.ts-anchor__item:hover {
  transform: translateX(4px);
}
自定义样式
自定义颜色
自定义间距
自定义动画
示例代码
vue
响应式布局
在移动端自动切换为水平布局,适配不同屏幕尺寸。

响应式设计

TsAnchor 支持响应式布局,在不同屏幕尺寸下自动调整布局方式。

桌面端布局

在桌面端(宽度 > 768px),锚点显示为垂直列表:

  • 固定在侧边栏
  • 垂直排列
  • 支持滚动
  • 紧凑布局

移动端布局

在移动端(宽度 ≤ 768px),锚点自动切换为水平布局:

  • 水平排列
  • 自适应宽度
  • 触摸友好
  • 边框样式

断点设置

默认断点为 768px,可以通过修改 CSS 变量自定义:

/* 自定义断点 */
@media (max-width: 1024px) {
  .ts-anchor__wrap {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }
  
  .ts-anchor__item {
    flex: 1;
    min-width: 100px;
    text-align: center;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 4px;
  }
}
响应式设计
桌面端布局
移动端布局
断点设置
示例代码
vue
属性 Props
属性名
说明
类型
可选值
默认值
版本说明
anchors
锚点列表数据
AnchorItem[]
-
[]
dark
是否启用暗黑模式
boolean
true / false
false
事件 Events
事件名
说明
回调参数
版本说明
click
点击锚点时触发
AnchorItem Types
属性名
说明
类型
可选值
默认值
版本说明
id
锚点的唯一标识符,用于页面元素定位和高亮
string
title
锚点显示的标题文本
string
基础用法
暗黑模式
自定义样式
响应式布局
属性 Props
事件 Events
AnchorItem Types