跳至主要內容
版本: 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 自訂屬性

安全區域內邊距

內容元件不會自動將內邊距套用到任何一側,以考慮到安全區域。這是因為內容元件通常與其他套用自己內邊距的元件一起使用,例如頁首頁尾。但是,如果內容元件單獨使用,則可能需要將內邊距套用到安全區域。這可以透過 CSS 使用 應用程式變數中描述的 --ion-safe-area-(dir) 變數來完成。

最常見的用例是將內邊距套用到內容的頂部,以考慮到狀態列。這可以透過將 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

fullscreen

描述如果為 true,則內容將在標頭和頁尾後面捲動。將工具列設定為透明可以很容易地看到此效果。
屬性fullscreen
類型boolean
預設值false

scrollEvents

描述由於效能原因,預設會停用 ionScroll 事件,為了啟用它們並開始從 (ionScroll) 監聽,請將此屬性設定為 true
屬性scroll-events
類型boolean
預設值false

scrollX

描述如果您想要在 X 軸上啟用內容捲動,請將此屬性設定為 true
屬性scroll-x
類型boolean
預設值false

scrollY

描述如果您想要在 Y 軸上停用內容捲動,請將此屬性設定為 false
屬性scroll-y
類型boolean
預設值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 陰影部件

名稱描述
background內容的背景。
scroll內容的可捲動容器。

CSS 自訂屬性

名稱描述
--background內容的背景
--color內容的顏色
--keyboard-offset內容的鍵盤偏移
--offset-bottom內容的底部偏移
--offset-top內容的頂部偏移
--padding-bottom內容的底部內距
--padding-end如果方向為從左到右,則為內容的右側內距,如果方向為從右到左,則為內容的左側內距
--padding-start如果方向為從左到右,則為內容的左側內距,如果方向為從右到左,則為內容的右側內距
--padding-top內容的頂部內距

插槽

名稱描述
``如果沒有提供插槽,則內容會放置在可捲動區域中。
fixed應該用於不應該捲動的固定內容。