# IndexBar 索引栏
### 介绍
用于列表的索引分类显示和快速定位。
### 引入
通过以下方式来全局注册组件,更多注册方式请参考[组件注册](#/zh-CN/advanced-usage#zu-jian-zhu-ce)。
```js
import { createApp } from 'vue';
import { IndexBar, IndexAnchor } from 'vant';
const app = createApp();
app.use(IndexBar);
app.use(IndexAnchor);
```
## 代码演示
### 基础用法
点击索引栏时,会自动跳转到对应的 `IndexAnchor` 锚点位置。
```html
...
```
### 自定义索引列表
可以通过 `index-list` 属性自定义展示的索引字符列表。
```html
标题1
标题2
...
```
```js
export default {
setup() {
return {
indexList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
};
},
};
```
## API
### IndexBar Props
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| index-list | 索引字符列表 | _(string \| number)[]_ | `A-Z` |
| z-index | z-index 层级 | _number \| string_ | `1` |
| sticky | 是否开启锚点自动吸顶 | _boolean_ | `true` |
| sticky-offset-top | 锚点自动吸顶时与顶部的距离 | _number_ | `0` |
| highlight-color | 索引字符高亮颜色 | _string_ | `#1989fa` |
| teleport | 指定索引栏挂载的节点 | _string \| Element_ | - |
### IndexAnchor Props
| 参数 | 说明 | 类型 | 默认值 |
| ----- | -------- | ------------------ | ------ |
| index | 索引字符 | _number \| string_ | - |
### IndexBar Events
| 事件名 | 说明 | 回调参数 |
| ------ | ---------------------------- | ------------------------- |
| select | 点击索引栏的字符时触发 | _index: number \| string_ |
| change | 当前高亮的索引字符变化时触发 | _index: number \| string_ |
### IndexBar 方法
通过 ref 可以获取到 IndexBar 实例并调用实例方法,详见[组件实例方法](#/zh-CN/advanced-usage#zu-jian-shi-li-fang-fa)。
| 方法名 | 说明 | 参数 | 返回值 |
| -------- | -------------- | ------------------------- | ------ |
| scrollTo | 滚动到指定锚点 | _index: number \| string_ | - |
### 类型定义
组件导出以下类型定义:
```ts
import type { IndexBarProps, IndexAnchorProps, IndexBarInstance } from 'vant';
```
`IndexBarInstance` 是组件实例的类型,用法如下:
```ts
import { ref } from 'vue';
import type { IndexBarInstance } from 'vant';
const indexBarRef = ref();
indexBarRef.value?.scrollTo('B');
```
### IndexAnchor Slots
| 名称 | 说明 |
| ------- | -------------------------------- |
| default | 锚点位置显示内容,默认为索引字符 |
## 主题定制
### 样式变量
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/config-provider)。
| 名称 | 默认值 | 描述 |
| ------------------------------------ | --------------------------- | ---- |
| --van-index-bar-sidebar-z-index | _2_ | - |
| --van-index-bar-index-font-size | _var(--van-font-size-xs)_ | - |
| --van-index-bar-index-line-height | _var(--van-line-height-xs)_ | - |
| --van-index-bar-index-active-color | _var(--van-primary-color)_ | - |
| --van-index-anchor-z-index | _1_ | - |
| --van-index-anchor-padding | _0 var(--van-padding-md)_ | - |
| --van-index-anchor-text-color | _var(--van-text-color)_ | - |
| --van-index-anchor-font-weight | _var(--van-font-bold)_ | - |
| --van-index-anchor-font-size | _var(--van-font-size-md)_ | - |
| --van-index-anchor-line-height | _32px_ | - |
| --van-index-anchor-background | _transparent_ | - |
| --van-index-anchor-sticky-text-color | _var(--van-primary-color)_ | - |
| --van-index-anchor-sticky-background | _var(--van-background-2)_ | - |