首页/新闻资讯/正文详情

shadcn-vue Dropdown Menu 组件完整指南:安装、API 与实战示例

发布时间:2026/9/24 14:40:57 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

Humanizer 小数秒时间跨度人性化策略:IFractionalTimeSpanHumanizeStrategy 接口深度解析与自定义实现指南
Humanizer 小数秒时间跨度人性化策略:IFractionalTimeSpanHumanizeStrategy 接口深度解析与自定义实现指南

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 导读 … · 2026/9/24 14:40:45

Fluxer 越南语本地化指南:解读 LOCALIZATION_PROMPT 与 vi 语言包实战规范
Fluxer 越南语本地化指南:解读 LOCALIZATION_PROMPT 与 vi 语言包实战规范

【免费下载链接】fluxer A free and open source instant messaging and VoIP chat app built for friends, groups, and communities. 项目地址: https://gitcode.com/gh_mirrors/flu/fluxer 点击查看 免费下载 Fluxer 是一个面向好友、群组与社区的开源即时通讯与… · 2026/9/24 14:40:38

ComfyUI 文生视频、图生视频:一条能跑通的实战路线
ComfyUI 文生视频、图生视频:一条能跑通的实战路线

ComfyUI 文生视频、图生视频:一条能跑通的实战路线 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper ComfyUI-WanVideoWrapper 是 WanVideo 系列模型在 ComfyUI 里的官方包装器&#x… · 2026/9/24 14:40:38

Skia 用户技巧与 FAQ 全解:SKP/MSKP 抓取、硬件加速、字体 Hinting 与文本整形
Skia 用户技巧与 FAQ 全解:SKP/MSKP 抓取、硬件加速、字体 Hinting 与文本整形

图形学 【免费下载链接】skia Skia is a complete 2D graphic library for drawing Text, Geometries, and Images. See documentation for contribution instructions. 项目地址: https://gitcode.com/gh_mirrors/ski/skia 点击查看 免费下载 本指南以 Skia 官方用… · 2026/9/24 15:11:23

RenderDoc Python 模块 API 参考全览:renderdoc 模块结构与十二大接口板块导航
RenderDoc Python 模块 API 参考全览:renderdoc 模块结构与十二大接口板块导航

开发工具调试器图形学GPU 【免费下载链接】renderdoc RenderDoc is a stand-alone graphics debugging tool. 项目地址: https://gitcode.com/gh_mirrors/re/renderdoc 点击查看 免费下载 RenderDoc 在图形调试工具之外,还向 Python 暴露了完整的内部接… · 2026/9/24 15:11:23

使用 Instant 与 SvelteKit / Svelte 5 构建实时应用:从零搭建、响应式查询到多人协作
使用 Instant 与 SvelteKit / Svelte 5 构建实时应用:从零搭建、响应式查询到多人协作

后端数据库 【免费下载链接】instant Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love. 项目地址: https://gitcode.com/gh_mirrors/inst/i… · 2026/9/24 15:11:23

Phoenix 前端 Relay 数据获取实践:Store 缓存保留、查询引用所有权与 node 单实体查询
Phoenix 前端 Relay 数据获取实践:Store 缓存保留、查询引用所有权与 node 单实体查询

可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 导读 Phoenix(AI Observability & Evaluation 平台&#xff… · 2026/9/24 15:11:23

FDA注册为什么要用 ASTM D4169?医疗器械包装验证标准一次讲清
FDA注册为什么要用 ASTM D4169?医疗器械包装验证标准一次讲清

医疗器械要顺利通过 FDA 注册,包装验证是不可绕过的一环。在众多标准中,ASTM D4169 是 FDA 认可度最高、也最常被审核员点名的运输包装性能测试标准。很多企业第一次接触它时一头雾水,其实它并不复杂,关键是理解它的核心逻辑。一、… · 2026/9/24 15:11:17

EDR告警降噪实战:从日均万条到50条以内的运营指南
EDR告警降噪实战:从日均万条到50条以内的运营指南

/* 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:11:17

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

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

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码