UI 组件 · 导航
侧边菜单
Sidebar Menu
也叫:侧边栏、侧边导航、左侧菜单、Side Nav、Sider
竖着排在页面左侧的导航菜单,能放很多栏目并按层级展开,常见于后台管理系统和文档站。
点「标注」看每个部分叫什么。
怎么跟 AI 说
改成你的业务内容再发页面左侧做一个宽 220px、贯穿全高的侧边菜单,每项前有图标。「订单管理」「用户管理」有二级菜单,点击展开或收起;当前页对应的菜单项背景高亮,父级保持展开。底部放折叠按钮,收起后只剩 64px 宽的图标列,悬停图标时用文字提示显示名称。
发给
01判断
你的内容是这样吗?
对照两列,确认侧边菜单是不是你要找的。
02避坑
常见坏用法
看起来能用,其实会给用户添麻烦。
- 01
只有三四个菜单项也做成固定的侧边栏,留下大片空白浪费宽度
- 02
子菜单嵌套到四五层,用户找不到入口,也看不出当前位置
- 03
当前页对应的菜单项没有高亮,父级也没有展开
03识别
怎么认出它
先看整体结构,再对照几个一眼能认出的特征。
结构
由纵向容器、带图标的菜单项、可展开的子菜单组和底部折叠按钮组成,常与顶部导航栏搭配使用。
组成部分点一下,在上面的线框里标出来
识别特征
- 1页面左侧一条贯穿上下的竖栏,常为深色或浅灰底
- 2一列带图标的菜单文字,部分项右侧有展开箭头
- 3某一项背景高亮,下方缩进显示子菜单
04解释
详细解释
侧边菜单沿页面左侧纵向排列,每一项是一个栏目,带子栏目的项可以点开展开下一级。因为是竖着排,能放下的栏目比顶部导航栏多得多,十几二十个也不拥挤,所以后台、控制台、文档站几乎都用它。
它通常支持收起:只剩一列图标,把空间让给右侧内容区。当前所在的菜单项会高亮,所在的父级保持展开,让用户知道自己的位置。
很多系统是「顶部导航栏 + 侧边菜单」组合:顶栏放产品 Logo 和个人信息,侧边菜单放业务栏目。如果只是在一个页面里切换几块内容,应该用标签页,不需要侧边菜单。
开发者信息术语 ID、DOM 线索、识别优先级
- 术语 ID
component-sidebar-menu- DOM 选择器
插件在本地识别时匹配这些 CSS 选择器(标签、ARIA role、常见组件库 class)。
aside navnav[aria-label*="sidebar" i]aside [role="menu"].ant-layout-sider.ant-menu-root.ant-menu-inline.ant-menu-root.ant-menu-vertical.el-asideul.el-menu--vertical:not(.el-menu--popup)[class*="MuiDrawer-docked"].arco-layout-sider.arco-menu-vertical.t-default-menu.n-layout-sider.n-menu--vertical[data-slot="sidebar"].nav.flex-columnaside:has(> nav)aside:has(> div > nav)[data-slot="sidebar-menu-button"][data-slot="sidebar-menu"]
- 类名关键词
类名、id、data-testid 拆成单词后连续匹配,例如 page-header、PageHeader_root__x7a、pageHeader 都拆成 page、header。
sidebarside-barsidenavside-navside-menusidemenusiderasideleft-navleftnavleft-menuleft-sidebarnav-sidebarsidebar-navsidebar-menuvertical-navapp-sidebarnav-rail
- 组件名
React / Vue 开发模式下读到的组件名,不区分大小写,会去掉 El、Ant、Mui 这类组件库前缀。
SidebarSideNavSideMenuSiderAppSidebarSidebarNavNavSidebarAsideNavRail
- 语义标签和角色
弱信号,要和其他线索一起才算识别出来。
<aside>
- 结构特征
根据元素的排列和样式算出来的特征,只用来加分,单独不判定。
贴边满高
- 优先级
- 2 · 同一层有多条命中时,优先级高的胜出
- 版本
- v2 · 更新于 2026/09/30