跳至主要内容
版本:v8

ion-content

阴影

内容组件提供了一个易于使用的内容区域,并提供了一些有用的方法来控制可滚动区域。在单个视图中应该只有一个内容。

内容以及许多其他 Ionic 组件可以使用 CSS 工具 中提供的全局样式进行自定义,以修改其填充、边距等,或者通过使用 CSS 和可用的 CSS 自定义属性 对其进行单独的样式设置。

基本用法

内容可以是页面中唯一的顶级组件,也可以与 页眉页脚 或两者一起使用。当与页眉或页脚一起使用时,它会调整其大小以填充剩余的高度。

全屏内容

默认情况下,内容会填充 页眉页脚 之间的空间,但不会延伸到它们后面。在某些情况下,可能希望内容在页眉和页脚后面滚动,例如,当在两者中都设置了 translucent 属性或在工具栏上设置了 opacity 时。这可以通过将内容的 fullscreen 属性设置为 true 来实现。

固定内容

要将元素放置在可滚动区域之外,请将其分配给 fixed 插槽。这样做会 绝对定位 元素到内容的左上角。为了改变元素的位置,可以使用 top、right、bottom 和 left CSS 属性对其进行样式设置。

fixedSlotPlacement 属性用于确定 fixed 插槽中的内容是在 DOM 中的“主内容”之前还是之后放置。当设置为 before 时,固定插槽内容将放置在主内容之前,因此将比主内容先接收键盘焦点。这在主内容包含无限滚动的列表时很有用,可以防止 FAB 或其他固定内容在按下 Tab 键时无法访问。

滚动方法

内容提供 方法,可以调用这些方法将内容滚动到底部、顶部或特定位置。它们可以传递 duration 以实现平滑过渡,而不是立即改变位置。

滚动事件

由于性能原因,内容的滚动事件默认情况下是禁用的。但是,可以将 scrollEvents 设置为 true 来启用它们。在监听任何滚动 事件 之前,这是必要的。

控制台
从上面的示例中记录的控制台消息将显示在此处。

主题

颜色

CSS 阴影部分

CSS 自定义属性

安全区域填充

内容组件不会自动将其任何边添加填充来考虑 安全区域。这是因为内容组件通常与其他添加自身填充的组件一起使用,例如 页眉页脚。但是,如果内容组件单独使用,则可能希望将填充应用于安全区域。这可以通过使用 应用程序变量 中描述的 --ion-safe-area-(dir) 变量来通过 CSS 完成。

最常见的用例是向内容的顶部添加填充以考虑状态栏。这可以通过将 padding-top 属性设置为 --ion-safe-area-top 变量的值来完成。

ion-content::part(scroll) {
padding-top: var(--ion-safe-area-top, 0);
}

另一个常见的用例是向内容的左侧添加填充以考虑当设备处于横向模式且凹口位于左侧时出现的凹口。这可以通过将 padding-left 属性设置为 --ion-safe-area-left 变量的值来完成。

ion-content::part(scroll) {
padding-left: var(--ion-safe-area-left, 0);
}

接口

ScrollBaseDetail

interface ScrollBaseDetail {
isScrolling: boolean;
}

ScrollDetail

interface ScrollDetail extends GestureDetail, ScrollBaseDetail {
scrollTop: number;
scrollLeft: number;
}

ScrollBaseCustomEvent

虽然不是必需的,但此接口可以在 CustomEvent 接口的位置使用,以在 ionScrollStartionScrollEnd 事件上进行更强的类型化。

interface ScrollBaseCustomEvent extends CustomEvent {
detail: ScrollBaseDetail;
target: HTMLIonContentElement;
}

ScrollCustomEvent

虽然不是必需的,但此接口可以在 CustomEvent 接口的位置使用,以在 ionScroll 事件上进行更强的类型化。

interface ScrollCustomEvent extends ScrollBaseCustomEvent {
detail: ScrollDetail;
}

属性

color

描述要从应用程序的调色板中使用的颜色。默认选项为:"primary""secondary""tertiary""success""warning""danger""light""medium""dark"。有关颜色的更多信息,请参见 主题
属性color
类型"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string | undefined
默认undefined

fixedSlotPlacement

描述控制固定内容相对于 DOM 中的主内容的位置。这可以用来控制固定元素接收键盘焦点的顺序。例如,如果固定插槽中的 FAB 应该在主页面内容之前接收键盘焦点,请将此属性设置为 'before'
属性fixed-slot-placement
类型"after" | "before"
默认'after'

forceOverscroll

描述如果为 true 且内容不会导致溢出滚动,则滚动交互会导致弹跳。如果内容超出 ionContent 的边界,则不会发生任何变化。注意,这不会禁用 iOS 上的系统弹跳。这是一个操作系统级别的设置。
属性force-overscroll
类型boolean | undefined
默认undefined

全屏

描述如果为true,内容将在标题和页脚后面滚动。可以通过将工具栏设置为透明来轻松看到此效果。
属性全屏
类型布尔值
默认false

滚动事件

描述出于性能原因,ionScroll 事件默认情况下处于禁用状态,为了启用它们并开始监听(ionScroll),将此属性设置为true
属性滚动-事件
类型布尔值
默认false

scrollX

描述如果要启用内容在 X 轴上的滚动,请将此属性设置为true
属性scroll-x
类型布尔值
默认false

scrollY

描述如果要禁用内容在 Y 轴上的滚动,请将此属性设置为false
属性scroll-y
类型布尔值
默认true

事件

名称描述冒泡
ionScroll滚动时发出。此事件默认情况下处于禁用状态。将scrollEvents 设置为true 以启用。true
ionScrollEnd滚动结束时发出。此事件默认情况下处于禁用状态。将scrollEvents 设置为true 以启用。true
ionScrollStart滚动开始时发出。此事件默认情况下处于禁用状态。将scrollEvents 设置为true 以启用。true

方法

getScrollElement

描述获取实际滚动发生的元素。此元素可用于订阅scroll 事件或手动修改scrollTop。但是,建议使用ion-content 提供的 API

例如,使用ionScrollionScrollStartionScrollEnd 用于滚动事件,以及scrollToPoint() 用于将内容滚动到特定点。
签名getScrollElement() => Promise<HTMLElement>

scrollByPoint

描述在组件中按指定的 X/Y 距离滚动。
签名scrollByPoint(x: number, y: number, duration: number) => Promise<void>

scrollToBottom

描述滚动到组件的底部。
签名scrollToBottom(duration?: number) => Promise<void>

scrollToPoint

描述滚动到组件中指定的 X/Y 位置。
签名scrollToPoint(x: number | undefined | null, y: number | undefined | null, duration?: number) => Promise<void>

scrollToTop

描述滚动到组件的顶部。
签名scrollToTop(duration?: number) => Promise<void>

CSS 阴影部分

名称描述
背景内容的背景。
滚动内容的可滚动容器。

CSS 自定义属性

名称描述
--background内容的背景
--color内容的颜色
--keyboard-offset内容的键盘偏移量
--offset-bottom内容的偏移底部
--offset-top内容的偏移顶部
--padding-bottom内容的底部填充
--padding-end如果方向为从左到右,则为内容的右侧填充;如果方向为从右到左,则为内容的左侧填充
--padding-start如果方向为从左到右,则为内容的左侧填充;如果方向为从右到左,则为内容的右侧填充
--padding-top内容的顶部填充

插槽

名称描述
``如果提供的内容没有插槽,则将其放置在可滚动区域中。
固定应用于不应滚动的固定内容。