shadcn-vue Dropdown Menu 组件完整指南:安装、API 与实战示例
UI组件前端【免费下载链接】shadcn-vueVue port of shadcn-ui项目地址https://gitcode.com/gh_mirrors/sh/shadcn-vue点击查看免费下载本指南围绕 shadcn-vue 中的 Dropdown Menu下拉菜单组件展开它是通过按钮等触发器向用户展示一组操作或功能的菜单组件。文章以官方文档dropdown-menu.md为骨架结合当前仓库apps/v4中基于 Reka UI 的实现源码与全部示例帮助你在 Vue 3 TypeScript 项目中完成组件的安装、基础使用以及 Checkbox、Radio Group、子菜单、快捷键、禁用态等完整场景的落地。组件概述Dropdown Menu 用于在按钮触发下向用户展示一个菜单菜单内通常包含一组动作或功能项。它是 shadcn-vue 组件库中交互最频繁、组合最灵活的组件之一广泛用于用户头像菜单、表格行操作、工具栏下拉、筛选条件选择等场景。该组件的实现以Reka UIshadcn-vue 的底层无头组件库为基础当前仓库在apps/v4/registry/bases/reka/ui/dropdown-menu/下提供了完整封装共包含 14 个组合部件部件说明DropdownMenu根容器管理打开状态与上下文DropdownMenuTrigger触发器点击后展开菜单DropdownMenuContent弹出的菜单内容面板DropdownMenuItem单个菜单项DropdownMenuCheckboxItem带复选框的菜单项DropdownMenuRadioGroup单选组容器DropdownMenuRadioItem单选菜单项DropdownMenuLabel分组标签DropdownMenuSeparator分隔线DropdownMenuGroup菜单项分组DropdownMenuShortcut快捷键提示文本DropdownMenuSub子菜单根容器DropdownMenuSubTrigger子菜单触发器DropdownMenuSubContent子菜单面板此外在用法中还会配合 Reka UI 提供的DropdownMenuPortal将内容渲染到 body使用。仓库同时维护了new-york-v4风格的同名组件集见 apps/v4/registry/new-york-v4/ui/dropdown-menu两套实现 API 一致可按项目风格选择。安装在项目根目录执行 shadcn-vue CLI 命令即可将 dropdown-menu 组件添加到项目中npx shadcn-vuelatest add dropdown-menu命令会在项目中生成components/ui/dropdown-menu/目录及上述全部部件文件。需要说明的是安装生成的代码结构与本仓库 apps/v4/registry/bases/reka/ui/dropdown-menu 下的实现一致均直接依赖reka-ui与vueuse/core。基础用法官方文档给出的最小可用示例——一个包含标签、分隔线与若干菜单项的账户菜单script setup langts import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from /components/ui/dropdown-menu /script template DropdownMenu DropdownMenuTriggerOpen/DropdownMenuTrigger DropdownMenuContent DropdownMenuLabelMy Account/DropdownMenuLabel DropdownMenuSeparator / DropdownMenuItemProfile/DropdownMenuItem DropdownMenuItemBilling/DropdownMenuItem DropdownMenuItemTeam/DropdownMenuItem DropdownMenuItemSubscription/DropdownMenuItem /DropdownMenuContent /DropdownMenu /template其中/components/ui/dropdown-menu是 CLI 安装后组件的默认导入路径。若需把按钮作为触发器可给DropdownMenuTrigger传as-child如:as-childtrue并嵌套Button实现点击按钮弹出菜单的常见形态——仓库中的演示组件 DropdownMenuDemo.vue 正是这样组合使用的。默认外观与对齐参数从 DropdownMenuContent.vue 的源码可以看到两个内置默认值const props withDefaults( definePropsDropdownMenuContentProps { class?: HTMLAttributes[class] }(), { align: start, // 与触发器左对齐 sideOffset: 4, // 距触发器 4px }, )即菜单面板默认左对齐、与触发器保持 4px 间距这些属性均可按需覆盖例如对齐到触发器末端使用alignend。面板样式通过cn()合并 Tailwind 类实现cn 工具其中使用--reka-dropdown-menu-content-available-height、--reka-dropdown-menu-trigger-width、--reka-dropdown-menu-content-transform-origin等 CSS 变量来控制高度、宽度与变换原点并借助data-[stateclosed]状态选择器在关闭时隐藏溢出内容。核心部件实现解析以 DropdownMenu.vue 为代表的封装遵循统一的薄封装模式通过defineProps/defineEmits透传 Reka UI 的 props 与事件再用useForwardPropsEmits或useForwardProps转发给底层组件script setup langts import type { DropdownMenuRootEmits, DropdownMenuRootProps } from reka-ui import { DropdownMenuRoot, useForwardPropsEmits } from reka-ui const props definePropsDropdownMenuRootProps() const emits defineEmitsDropdownMenuRootEmits() const forwarded useForwardPropsEmits(props, emits) /script template DropdownMenuRoot v-slotslotProps>script setup langts import { ref } from vue import { Button } from /components/ui/button import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuTrigger, } from /components/ui/dropdown-menu const showStatusBar ref(true) const showActivityBar ref(false) const showPanel ref(false) /script template DropdownMenu DropdownMenuTrigger :as-childtrue Button variantoutlineCheckboxes/Button /DropdownMenuTrigger DropdownMenuContent classmin-w-40 DropdownMenuGroup DropdownMenuLabelAppearance/DropdownMenuLabel DropdownMenuCheckboxItem v-model:checkedshowStatusBar Status Bar /DropdownMenuCheckboxItem DropdownMenuCheckboxItem v-model:checkedshowActivityBar disabled Activity Bar /DropdownMenuCheckboxItem DropdownMenuCheckboxItem v-model:checkedshowPanel Panel /DropdownMenuCheckboxItem /DropdownMenuGroup /DropdownMenuContent /DropdownMenu /template要点DropdownMenuCheckboxItem通过v-model:checked双向绑定布尔值天然适合开关类偏好设置传入disabled即可禁用该项如上面示例中的 Activity Bar从 DropdownMenuCheckboxItem.vue 源码可见勾选指示图标由DropdownMenuItemIndicator包裹默认渲染为多图标库占位组件IconPlaceholder同时声明了 lucide、tabler、hugeicons、phosphor、remixicon 五套图标名也支持通过indicator-icon插槽替换为自定义图标。示例二Radio Group 菜单项当需要在若干互斥选项中单选时使用DropdownMenuRadioGroupDropdownMenuRadioItem。以下代码取自仓库示例 DropdownMenuWithRadio.vuescript setup langts import { ref } from vue import { Button } from /components/ui/button import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from /components/ui/dropdown-menu const position ref(bottom) /script template DropdownMenu DropdownMenuTrigger :as-childtrue Button variantoutlineRadio Group/Button /DropdownMenuTrigger DropdownMenuContent DropdownMenuGroup DropdownMenuLabelPanel Position/DropdownMenuLabel DropdownMenuRadioGroup v-modelposition DropdownMenuRadioItem valuetopTop/DropdownMenuRadioItem DropdownMenuRadioItem valuebottomBottom/DropdownMenuRadioItem DropdownMenuRadioItem valueright disabledRight/DropdownMenuRadioItem /DropdownMenuRadioGroup /DropdownMenuGroup /DropdownMenuContent /DropdownMenu /template要点DropdownMenuRadioGroup通过v-model绑定当前选中值DropdownMenuRadioItem的value即为可选项取值选中项会由DropdownMenuItemIndicator渲染指示图标与 Checkbox 共用一个 indicator 插槽机制见 DropdownMenuRadioItem.vue单选组非常适合菜单内切换视图/排序方式等场景。更多实战形态来自仓库示例仓库在 apps/v4/registry/bases/reka/examples/dropdown-menu 目录下提供了十余个可直接借鉴的完整示例覆盖常见进阶需求子菜单SubmenuDropdownMenuWithSubmenu.vue 演示DropdownMenuSubDropdownMenuSubTriggerDropdownMenuSubContent的嵌套菜单。从 DropdownMenuSubTrigger.vue 源码可见触发器右侧默认渲染右箭头图标ChevronRightIcon等并带有cn-rtl-flip类以适配 RTL 布局时自动镜像DropdownMenuSubContent.vue 通过--reka-dropdown-menu-content-available-width限制最大宽度并处理溢出。快捷键提示配合DropdownMenuShortcut展示⇧⌘P、⌘B等按键提示文本见 DropdownMenuShortcut.vue本质是一个带dropdown-menu-shortcut标识的span。带图标菜单项DropdownMenuWithIcons.vue、DropdownMenuWithCheckboxesIcons.vue 等展示了在菜单项内嵌图标排版。危险操作项给DropdownMenuItem传variantdestructive获得强调危险语义的样式DropdownMenuWithDestructive.vue。头像菜单DropdownMenuWithAvatar.vue 展示头像 用户信息 操作项的典型账户菜单布局。对话框内使用DropdownMenuInDialog.vue 说明菜单嵌套在 Dialog 中的写法。综合示例DropdownMenuDemo.vue 组合了标签、分组、子菜单、快捷键、禁用项与分隔线是最接近真实业务的完整范式。无障碍与键盘交互由于底层使用 Reka UI 的无头组件实现Dropdown Menu 继承了完整的 WAI-ARIA 语义与键盘支持此类行为由底层库保证可在 Reka UI 的 dropdown-menu 文档中核对细节。结合仓库封装的data-slot与data-disabled属性建议在使用时注意菜单项通过disabled禁用后会自动移除指针事件并降低透明度无需手动处理焦点子菜单触发器内建右箭头指示图标视觉与键盘导航语义一致根组件DropdownMenu的插槽会透出 Reka UI 的上下文属性如打开状态可用于自定义触发器外观或打开时高亮等状态样式。小结shadcn-vue 的 Dropdown Menu 以薄封装 Reka UI Tailwind 样式的方式交付安装一条命令、组合 14 个部件即可覆盖从基础菜单到多选、单选、子菜单、快捷键、危险操作等全部常见交互。官方文档dropdown-menu.md提供了安装命令、基础用法与 Checkbox / Radio Group 两个核心示例仓库中的 ui/dropdown-menu 源码展示了 props 透传、reactiveOmit自定义属性剥离、data-slot标识与多图标库占位等工程化细节而 examples/dropdown-menu 目录则为不同业务形态提供了可直接复用的模板。赞分享UI组件前端【免费下载链接】shadcn-vueVue port of shadcn-ui项目地址https://gitcode.com/gh_mirrors/sh/shadcn-vue点击查看免费下载相关推荐shadcn-vue Context Menu 组件完整指南从安装到源码级解析shadcn vue Context Menu 组件完整指南从安装到源码级解析 本文围绕 shadcn vueVue 版 shadcn ui中的 ContUI组件前端Haystack 实验性 LLMSummarizer 组件详解基于 LLM 的分块摘要与参数调优指南Haystack 实验性 LLMSummarizer 组件详解基于 LLM 的分块摘要与参数调优指南 Haystack 提供了一套实验性组件 haystackUI组件前端Neon 跨团队 CPU 与内存性能剖析基于 pprof 的统一 Profile 方案Rust / Go / CNeon 跨团队 CPU 与内存性能剖析基于 pprof 的统一 Profile 方案Rust / Go / C 本文基于 Neon 仓库中的设计文档 dUI组件前端上一篇10分钟掌握C STL代码生成微软官方库实战指南下一篇History.js与TypeScript类型定义与类型安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Miller 日志处理实战:用 DKVP 格式对异构日志做临时分析与聚合

Miller 日志处理实战:用 DKVP 格式对异构日志做临时分析与聚合

CLI数据分析 【免费下载链接】miller Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON 项目地址: https://gitcode.com/gh_mirrors/mi/miller 点击查看 免费下载 本文基于 Miller 官方文档《Log-processi…

2026/9/24 14:39:57 阅读更多 →
Zynq UltraScale+ MPSoC多核异构开发:RPU裸机与APU Linux的OpenAMP核间通信实战

Zynq UltraScale+ MPSoC多核异构开发:RPU裸机与APU Linux的OpenAMP核间通信实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 14:39:57 阅读更多 →
Stellarium 天空文化深度解析:indian_nakshatras 印度二十七宿(Nakshatras)的史实还原与源码实现

Stellarium 天空文化深度解析:indian_nakshatras 印度二十七宿(Nakshatras)的史实还原与源码实现

桌面应用图形学科研 【免费下载链接】stellarium Stellarium is a free GPL software which renders realistic skies in real time with OpenGL. It is available for Linux/Unix, Windows, macOS and Haiku. With Stellarium, you really see what you can see with your eye…

2026/9/24 14:39:57 阅读更多 →

最新新闻

PHPStan `preInc.type` 错误详解:在类型不支持时使用前置自增运算符 `++`

PHPStan `preInc.type` 错误详解:在类型不支持时使用前置自增运算符 `++`

PHPStan preInc.type 错误详解:在类型不支持时使用前置自增运算符 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan preInc.type 是 PHPStan 官…

2026/9/24 15:21:37 阅读更多 →
OpenCV G-API 背景解析:图执行模型如何同时优化与移植图像处理流水线

OpenCV G-API 背景解析:图执行模型如何同时优化与移植图像处理流水线

计算机视觉图像处理深度学习机器学习 【免费下载链接】opencv_contrib Repository for OpenCVs extra modules 项目地址: https://gitcode.com/gh_mirrors/op/opencv_contrib 点击查看 免费下载 导读 本文以 opencv_contrib 仓库中 G-API 模块的背景章节&#xff…

2026/9/24 15:21:37 阅读更多 →
Design Compiler:Concurrent Clock and Data Optimization(CCD)的使用

Design Compiler:Concurrent Clock and Data Optimization(CCD)的使用

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 目录 并行时钟与数据优化的原理 向IC Compiler II传递CCD信息 旧版行为 新版行为(默认) 并行时钟与数据优化的原理 物理实现工具&…

2026/9/24 15:21:37 阅读更多 →
n8n生产环境部署实战:Docker Compose+PostgreSQL+反向代理完整指南

n8n生产环境部署实战:Docker Compose+PostgreSQL+反向代理完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 15:21:37 阅读更多 →
PHPStan 错误标识解析:nullCoalesce.unnecessary——发现并清除冗余的 `?? null` 与 `??= null`

PHPStan 错误标识解析:nullCoalesce.unnecessary——发现并清除冗余的 `?? null` 与 `??= null`

PHPStan 错误标识解析:nullCoalesce.unnecessary——发现并清除冗余的 ?? null 与 ?? null 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan …

2026/9/24 15:21:37 阅读更多 →
在 VoltAgent 中接入 Amazon Bedrock:从凭证配置到多模型路由的完整实战指南

在 VoltAgent 中接入 Amazon Bedrock:从凭证配置到多模型路由的完整实战指南

人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆 【免费下载链接】voltagent AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework 项目地址: https://gitcode.com/gh_mirrors/vo/voltagent 点击查看 免费下载 本…

2026/9/24 15:20:37 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →