关于 syncfusion-javascript-menu
面向开发者的 TypeScript 技能,指导使用 Syncfusion Menu 构建导航界面,涵盖层级数据、响应式布局、自定义、无障碍、事件和动态项目管理。
主要功能
- 01多层嵌套菜单项
- 02JSON 与服务数据绑定
- 03水平和垂直布局
- 04子菜单动画与滚动
- 05动态项目及事件管理
- 06键盘导航与 ARIA 支持
适用场景
- 01构建应用导航栏
- 02创建多层级分类菜单
- 03添加移动端汉堡菜单
- 04动态管理菜单项
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ syncfusion/ javascript-ui-controls-skills --skill syncfusion-javascript-menu安装后在 Claude Code 中输入/syncfusion-javascript-menu确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/accessibility-and-best-practices.mdadvanced-features.mdapi-reference.mdcustomization-and-styling.mddata-binding.mdgetting-started.mdmenu-items-and-hierarchy.mduse-cases-and-scenarios.mdworking-with-events.md详细介绍
实现 Syncfusion TypeScript 菜单
Syncfusion 菜单是一种图形用户界面组件,可用作应用和网站的导航栏。它支持多级嵌套菜单项、数据绑定、动画、滚动和全面的事件处理。
何时使用此技能
在以下情况下使用此技能:
- 创建导航层级:构建包含多级嵌套项的分层菜单结构
- 实现数据驱动菜单:将菜单项绑定到 JSON 数据、服务或自引用数据源
- 自定义菜单外观:配置动画、方向、样式和主题
- 处理菜单交互:响应用户点击、菜单打开/关闭事件以及菜单项选择
- 构建响应式菜单:创建带滚动功能的水平/垂直菜单,以显示大型数据集
- 支持无障碍访问:实现键盘导航和屏幕阅读器支持
- 管理菜单状态:动态添加、移除、启用、禁用、显示或隐藏菜单项
控件概述
主要功能
- 数据绑定:支持分层 JSON 数据、自引用数据和基于服务的数据源
- 模板支持:使用 HTML 模板和自定义内容定制菜单项
- 方向:以水平或垂直方向显示菜单
- 动画:为子菜单应用淡入、缩放和向下滑动效果
- 滚动:为水平和垂直菜单启用滚动
- 无障碍访问:内置键盘导航和 ARIA 屏幕阅读器支持
- 事件:全面的事件系统,包含 select、beforeOpen、onOpen、beforeClose、onClose 和 beforeItemRender
- 菜单项管理:动态添加、移除、启用、禁用、显示或隐藏菜单项
- RTL 支持:支持从右向左书写的语言
- 汉堡菜单模式:适用于移动设备的响应式菜单
文档与导航指南
入门
📄 阅读: references/getting-started.md
- 安装和软件包依赖项
- 开发环境设置
- CSS 导入和主题配置
- 使用 TypeScript 初始化基本菜单
- 菜单渲染所需的 HTML 结构
- 运行第一个菜单应用
菜单项与层级
📄 阅读: references/menu-items-and-hierarchy.md
- 创建简单的平面菜单项
- 构建多级嵌套层级
- MenuItem 属性概览
- 菜单项文本、ID、URL 和图标
- 用于分组的分隔项
- MenuItemModel 接口参考
数据绑定与字段映射
📄 阅读: references/data-binding.md
- 绑定分层 JSON 数据
- 自引用数据源模式
- 数据服务集成
- 用于自定义字段映射的 FieldSettings
- HTML 元素绑定
- 处理大型数据集
自定义与样式
📄 阅读: references/customization-and-styling.md
- CSS 类自定义
- 水平与垂直方向
- 动画设置和效果
- 圆角样式
- 使用模板创建自定义菜单项
- 从右向左(RTL)支持
- 主题自定义
使用事件
📄 阅读: references/working-with-events.md
- 事件类型和生命周期
- 处理 select 事件
- beforeOpen 和 onOpen 事件
- beforeClose 和 onClose 事件
- beforeItemRender 事件
- 事件参数属性
- 实际事件示例
高级功能与菜单项管理
📄 阅读: references/advanced-features.md
- 添加和移除菜单项
- 启用和禁用菜单项
- 隐藏和显示菜单项
- 可滚动菜单(enableScrolling)
- 子菜单定位
- 用于移动设备的汉堡菜单模式
- 菜单效果和过渡
- 性能优化
用例和场景
📄 阅读: references/use-cases-and-scenarios.md
- 包含大型数据集的可滚动菜单
- 手风琴菜单模式
- 侧边栏菜单实现
- 工具栏集成
- 上下文菜单模式
- 助记符 UI 实现
- 带图标和标题的菜单
无障碍功能和最佳实践
📄 阅读: references/accessibility-and-best-practices.md
- 键盘导航支持
- ARIA 属性和屏幕阅读器
- 用于安全性的 HTML 清理
- 移动端适配
- 性能优化技巧
- 常见问题和解决方案
- 测试和验证
完整 API 参考
📄 阅读: references/api-reference.md
- 菜单属性、类型和默认值
- MenuItem 属性和选项
- 菜单方法和参数
- 带参数结构的事件
- 动画效果和枚举
- 字段设置配置
- 每个 API 元素的完整代码示例
快速入门示例
import { Menu, MenuItemModel } from '@syncfusion/ej2-navigations';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
// Define menu items
let menuItems: MenuItemModel[] = [
{
text: 'File',
items: [
{ text: 'Open' },
{ text: 'Save' },
{ text: 'Exit' }
]
},
{
text: 'Edit',
items: [
{ text: 'Cut' },
{ text: 'Copy' },
{ text: 'Paste' }
]
},
{
text: 'View',
items: [
{ text: 'Toolbar' },
{ text: 'Sidebar' }
]
},
{ text: 'Help' }
];
// Initialize Menu
let menuObj: Menu = new Menu({ items: menuItems }, '#menu');
常见模式
模式 1:响应项目选择
let menuObj: Menu = new Menu({
items: menuItems,
select: (args: MenuEventArgs) => {
console.log(`Selected: ${args.item.text}`);
}
}, '#menu');
模式 2:动态管理项目
// Add new item
menuObj.insertAfter([{ text: 'Print' }], '#open');
// Enable/disable items
menuObj.enableItems([0, 1]);
menuObj.disableItems([2]);
// Show/hide items
menuObj.showItems([0, 1]);
menuObj.hideItems([2]);
模式 3:跟踪事件
let menuObj: Menu = new Menu({
items: menuItems,
beforeOpen: (args: BeforeOpenCloseMenuEventArgs) => {
console.log('Menu opening:', args.name);
},
onOpen: (args: OpenCloseMenuEventArgs) => {
console.log('Menu opened:', args.name);
},
beforeClose: (args: BeforeOpenCloseMenuEventArgs) => {
console.log('Menu closing:', args.name);
}
}, '#menu');
模式 4:从 JSON 绑定数据
let hierarchicalData: MenuItemModel[] = [
{
text: 'Categories',
items: [
{ text: 'Electronics' },
{ text: 'Furniture' },
{ text: 'Accessories' }
]
}
];
let menuObj: Menu = new Menu({ items: hierarchicalData }, '#menu');
主要属性和方法
必备属性
| 属性 | 类型 | 用途 |
|---|---|---|
items | MenuItemModel[] | 要显示的菜单项数组 |
orientation | Orientation | 水平或垂直布局 |
animationSettings | MenuAnimationSettingsModel | 子菜单的动画效果 |
enableScrolling | boolean | 启用大型菜单的滚动 |
enableRtl | boolean | 支持从右向左布局 |
cssClass | string | 自定义 CSS 类 |
fields | FieldSettingsModel | 用于数据绑定的字段映射 |
必备方法
| 方法 | 参数 | 用途 |
|---|---|---|
open() | element?: HTMLElement | 打开菜单或子菜单 |
close() | - | 关闭菜单 |
enableItems() | items: string[] | number[] | 启用指定菜单项 |
disableItems() | items: string[] | number[] | 禁用指定菜单项 |
hideItems() | items: string[] | number[] | 隐藏指定菜单项 |
showItems() | items: string[] | number[] | 显示已隐藏的菜单项 |
insertAfter() | items: MenuItemModel[], target?: string | number | 在目标项之后插入菜单项 |
insertBefore() | items: MenuItemModel[], target?: string | number | 在目标项之前插入菜单项 |
removeItems() | items: string[] | number[] | 移除指定菜单项 |
常见用例
- 应用程序导航:用于应用程序主导航栏
- 下拉菜单:上下文菜单和下拉导航
- 分层导航:多级类别或版块导航
- 响应式菜单:适用于移动设备的汉堡菜单
- 自定义布局:基于模板的自定义菜单项
- 动态更新:实时管理菜单项
- 无障碍功能:支持键盘导航的菜单
需要更多详情? 请查看上方的完整参考文档,了解实现示例、高级配置和最佳实践。
评论
支持 Markdown