Sidebar 侧边导航 - Vant 4
📚 Sidebar 侧边导航
🎯 介绍
用于在页面侧边展示分组导航列表,支持双向绑定选中项、徽标提示和禁用态,常用于商品分类、设置菜单等场景。
📦 引入
通过以下方式来全局注册组件,更多注册方式请参考组件注册。
js
import { createApp } from'vue'; import { Sidebar, SidebarItem } from'vant'; const app = createApp(); app.use(Sidebar); app.use(SidebarItem);🎯 代码演示
🔧 基础用法
通过 v-model 绑定当前选中项的索引,轻松实现侧边导航的选中状态管理。
html
<template>
<van-sidebar v-model="active">
<van-sidebar-item title="标签名称" />
<van-sidebar-item title="标签名称" />
<van-sidebar-item title="标签名称" />
</van-sidebar>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const active = ref(0);
return { active };
},
};
</script>🏷️ 徽标提示
设置 dot 属性后,会在右上角展示一个小红点;设置 badge 属性后,会在右上角展示相应的徽标,让用户一眼就能看到重要信息。
html
<template>
<van-sidebar v-model="active">
<van-sidebar-item title="标签名称" dot />
<van-sidebar-item title="标签名称" badge="5" />
<van-sidebar-item title="标签名称" badge="20" />
</van-sidebar>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const active = ref(0);
return { active };
},
};
</script>🚫 禁用选项
通过 disabled 属性禁用选项,灰色显示让用户清楚知道该选项不可点击。
html
<template>
<van-sidebar v-model="active">
<van-sidebar-item title="标签名称" />
<van-sidebar-item title="标签名称" disabled />
<van-sidebar-item title="标签名称" />
</van-sidebar>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const active = ref(0);
return { active };
},
};
</script>🔔 监听切换事件
设置 change 方法来监听切换导航项时的事件,实现更丰富的交互体验。
html
<template>
<van-sidebar v-model="active" @change="onChange">
<van-sidebar-item title="标签名称" />
<van-sidebar-item title="标签名称" />
<van-sidebar-item title="标签名称" />
</van-sidebar>
</template>
<script>
import { ref } from 'vue';
import { showToast } from 'vant';
export default {
setup() {
const active = ref(0);
const onChange = (index) => showToast(`切换到标签 ${index + 1}`);
return { active, onChange };
},
};
</script>📋 API
🎛️ Sidebar Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| v-model | 🎯 当前导航项的索引 | number | string | 0 |
🎪 Sidebar Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| change | 🔄 切换导航项时触发 | index: number |
🎨 SidebarItem Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| title | 📝 导航项标题内容 | string | '' |
| dot | 🔴 是否显示右上角小红点 | boolean | false |
| badge | 🏷️ 图标右上角徽标的内容 | number | string | - |
| badge-props | ⚙️ 自定义徽标的属性,传入的对象会被透传给 Badge 组件的 props | BadgeProps | - |
| disabled | 🚫 是否禁用该项 | boolean | false |
| url | 🔗 点击后跳转的链接地址 | string | - |
| to | 🧭 点击后跳转的目标路由对象,等同于 Vue Router 的 to 属性 | string | object | - |
| replace | 🔄 是否在跳转时替换当前页面历史 | boolean | false |
🎪 SidebarItem Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| click | 👆 点击时触发 | index: number |
🎭 SidebarItem Slots
| 名称 | 说明 |
|---|---|
| title | 🎨 自定义标题内容 |
📘 类型定义
组件导出以下类型定义,方便在 TypeScript 项目中使用:
ts
import type { SidebarProps, SidebarItemProps } from 'vant';🎨 主题定制
🎛️ 样式变量
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。
| 名称 | 默认值 | 描述 |
|---|---|---|
| --van-sidebar-width | 80px | 📏 侧边栏宽度 |
| --van-sidebar-font-size | var(--van-font-size-md) | 📝 文字大小 |
| --van-sidebar-line-height | var(--van-line-height-md) | 📏 文字行高 |
| --van-sidebar-text-color | var(--van-text-color) | 🎨 文字颜色 |
| --van-sidebar-disabled-text-color | var(--van-text-color-3) | 🎨 禁用状态文字颜色 |
| --van-sidebar-padding | 20px var(--van-padding-sm) | 🔲 内边距 |
| --van-sidebar-active-color | var(--van-active-color) | 🎨 激活状态颜色 |
| --van-sidebar-background | var(--van-background) | 🎨 背景颜色 |
| --van-sidebar-selected-font-weight | var(--van-font-bold) | 📝 选中状态字体粗细 |
| --van-sidebar-selected-text-color | var(--van-text-color) | 🎨 选中状态文字颜色 |
| --van-sidebar-selected-border-width | 4px | 📏 选中状态边框宽度 |
| --van-sidebar-selected-border-height | 16px | 📏 选中状态边框高度 |
| --van-sidebar-selected-border-color | var(--van-primary-color) | 🎨 选中状态边框颜色 |
| --van-sidebar-selected-background | var(--van-background-2) | 🎨 选中状态背景颜色 |
📚 相关文档
🧭 导航组件
- Tab 标签页 - 📑 水平标签页导航,适合内容切换场景
- Tabbar 标签栏 - 📱 底部标签栏导航,移动端主导航首选
- TreeSelect 分类选择 - 🌳 树形分类选择器,支持多级分类展示
🎨 展示组件
🔧 工具组件
- ConfigProvider 全局配置 - ⚙️ 全局配置提供者,统一管理主题样式
- Popup 弹出层 - 🎪 弹出层容器,可用于构建抽屉式侧边栏