ion-menu
菜单组件是一个从当前视图侧面滑入的导航抽屉。默认情况下,它使用开始侧,使其从 LTR 的左侧和 RTL 的右侧滑入,但侧边可以被覆盖。菜单将根据模式以不同的方式显示,但是显示类型可以更改为任何可用的菜单类型。
菜单元素应为主内容元素的同级元素。可以有任意数量的菜单附加到内容。这些可以从模板中控制,也可以使用 MenuController
以编程方式控制。
基本用法
菜单切换
可以使用 菜单切换 组件来创建自定义按钮,可以打开或关闭菜单。
菜单类型
type
属性可用于自定义菜单在应用程序中的显示方式。
菜单侧边
菜单默认情况下显示在 "start"
侧。在使用从左到右方向的应用程序中,这是左侧,而在从右到左的应用程序中,这是右侧。菜单还可以设置为显示在 "end"
侧,即与 "start"
相反的一侧。
如果应用程序中需要两侧的菜单,可以通过将 side
值传递给 MenuController
上的 open
方法来打开菜单。如果没有提供侧边,则将打开 "start"
侧的菜单。有关使用 MenuController
的示例,请参见下面的 多个菜单 部分。
多个菜单
当同一侧存在多个菜单时,我们需要通过 ID 来引用它们,而不是通过侧边。否则,可能会激活错误的菜单。
主题
CSS 阴影部分
接口
MenuCustomEvent
虽然不是必需的,但可以在 CustomEvent
接口处使用此接口,以便更强类型的 Ionic 事件从该组件发出。
interface MenuCustomEvent<T = any> extends CustomEvent {
detail: T;
target: HTMLIonMenuElement;
}
属性
contentId
描述 | 主内容的 id 。使用路由器时,这通常是 ion-router-outlet 。不使用路由器时,这通常是主视图的 ion-content 。这不是 ion-menu 内部的 ion-content 的 ID。 |
属性 | content-id |
类型 | string | undefined |
默认值 | undefined |
disabled
描述 | 如果为 true ,则菜单被禁用。 |
属性 | disabled |
类型 | boolean |
默认值 | false |
maxEdgeStart
描述 | 拖动菜单打开的边缘阈值。如果拖动/滑动发生在该值之上,则不会触发菜单。 |
属性 | max-edge-start |
类型 | number |
默认值 | 50 |
menuId
描述 | 菜单的 ID。 |
属性 | menu-id |
类型 | string | undefined |
默认值 | undefined |
side
描述 | 菜单应放置在视图的哪一侧。 |
属性 | side |
类型 | "end" | "start" |
默认值 | 'start' |
swipeGesture
描述 | 如果为 true ,则启用滑动菜单。 |
属性 | swipe-gesture |
类型 | boolean |
默认值 | true |
type
描述 | 菜单的显示类型。可用选项:"overlay" 、"reveal" 、"push" 。 |
属性 | type |
类型 | "overlay" | "push" | "reveal" | undefined |
默认值 | undefined |
事件
名称 | 描述 | 冒泡 |
---|---|---|
ionDidClose | 当菜单关闭时发出。 | true |
ionDidOpen | 当菜单打开时发出。 | true |
ionWillClose | 当菜单即将关闭时发出。 | true |
ionWillOpen | 当菜单即将打开时发出。 | true |
方法
close
描述 | 关闭菜单。如果菜单已关闭或无法关闭,则返回 false 。 |
签名 | close(animated?: boolean, role?: string) => Promise<boolean> |
isActive
描述 | 如果菜单处于活动状态,则返回 true 。当菜单可以打开或关闭时,菜单处于活动状态,这意味着它已启用且不是 ion-split-pane 的一部分。 |
签名 | isActive() => Promise<boolean> |
isOpen
描述 | 如果菜单已打开,则返回 true 。 |
签名 | isOpen() => Promise<boolean> |
open
描述 | 打开菜单。如果菜单已打开或无法打开,则返回 false 。 |
签名 | open(animated?: boolean) => Promise<boolean> |
setOpen
描述 | 打开或关闭按钮。如果操作无法成功完成,则返回 false 。 |
签名 | setOpen(shouldOpen: boolean, animated?: boolean, role?: string) => Promise<boolean> |
toggle
描述 | 切换菜单。如果菜单已打开,它将尝试关闭,否则它将尝试打开它。如果操作无法成功完成,则返回 false 。 |
签名 | toggle(animated?: boolean) => Promise<boolean> |
CSS 阴影部分
名称 | 描述 |
---|---|
backdrop | 菜单打开时出现在主内容上方的背景。 |
container | 菜单内容的容器。 |
CSS 自定义属性
- iOS
- MD
名称 | 描述 |
---|---|
--background | 菜单的背景 |
--height | 菜单的高度 |
--max-height | 菜单的最大高度 |
--max-width | 菜单的最大宽度 |
--min-height | 菜单的最小高度 |
--min-width | 菜单的最小宽度 |
--width | 菜单的宽度 |
名称 | 描述 |
---|---|
--background | 菜单的背景 |
--height | 菜单的高度 |
--max-height | 菜单的最大高度 |
--max-width | 菜单的最大宽度 |
--min-height | 菜单的最小高度 |
--min-width | 菜单的最小宽度 |
--width | 菜单的宽度 |
插槽
该组件没有可用的插槽。