TsAnchor 是一个用于页面内快速定位的锚点组件,支持自动高亮当前可见的锚点。
当用户滚动页面时,组件会自动检测当前在视口中的锚点,并高亮显示对应的导航项。
只需传入锚点列表,组件会自动处理滚动监听和高亮逻辑。
import { TsAnchor } from 'tui';
const anchors = [
{ id: 'section1', title: '章节一' },
{ id: 'section2', title: '章节二' },
];
<TsAnchor :anchors="anchors" />组件提供了简单的 props 接口,支持自定义锚点数据和暗黑模式。
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;
}可以通过 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);
}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;
}
}