メインコンテンツへスキップ
バージョン: v8

ion-content

shadow

コンテンツコンポーネントは、スクロール可能な領域を制御するためのいくつかの便利なメソッドを備えた、使いやすいコンテンツ領域を提供します。単一のビューにはコンテンツが1つだけ存在する必要があります。

コンテンツは、他の多くのIonicコンポーネントと同様に、CSSユーティリティで提供されるグローバルスタイルを使用するか、CSSと利用可能なCSSカスタムプロパティを使用して個別にスタイルを設定することで、パディング、マージンなどを変更するようにカスタマイズできます。

基本的な使用法

コンテンツは、ページ内の最上位コンポーネントであるか、ヘッダーフッター、またはその両方と一緒に使用できます。ヘッダーまたはフッターと一緒に使用する場合、残りの高さに合わせてサイズが調整されます。

フルスクリーンコンテンツ

デフォルトでは、コンテンツはヘッダーフッターの間のスペースを埋めますが、それらの背後には移動しません。特定のケースでは、ヘッダーまたはフッターのいずれかにtranslucentプロパティが設定されている場合や、ツールバーにopacityが設定されている場合など、コンテンツがヘッダーとフッターの背後でスクロールするようにすることが望ましい場合があります。これは、コンテンツのfullscreenプロパティをtrueに設定することで実現できます。

固定コンテンツ

スクロール可能な領域の外に要素を配置するには、それらをfixedスロットに割り当てます。これにより、要素がコンテンツの左上に絶対配置されます。要素の位置を変更するには、top、right、bottom、leftのCSSプロパティを使用してスタイルを設定できます。

fixedSlotPlacementプロパティは、fixedスロット内のコンテンツをDOM内のメインコンテンツの前または後のどちらに配置するかを決定するために使用されます。beforeに設定すると、固定スロットコンテンツはメインコンテンツの前に配置されるため、メインコンテンツがキーボードフォーカスを受け取る前にキーボードフォーカスを受け取ります。これは、メインコンテンツに無限スクロールリストが含まれている場合に、FABまたはその他の固定コンテンツがタブキーを押すことで到達できないようにする場合に役立ちます。

スクロールメソッド

コンテンツは、コンテンツを下、上、または特定のポイントにスクロールするために呼び出すことができるメソッドを提供します。位置を瞬時に変更するのではなく、スムーズに移行するためにdurationを渡すことができます。

スクロールイベント

パフォーマンス上の理由から、コンテンツのスクロールイベントはデフォルトで無効になっています。ただし、scrollEventstrueに設定することで有効にできます。スクロールイベントをリッスンする前に、これが必要です。

コンソール
上記の例からログ出力された場合、コンソールメッセージがここに表示されます。

テーマ設定

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);
}

もう1つの一般的なユースケースは、デバイスが横向きモードでノッチが左側にある場合に、ノッチを考慮してコンテンツの左側にパディングを適用することです。これは、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

必須ではありませんが、このインターフェースは、ionScrollStartおよびionScrollEndイベントの型付けを強化するために、CustomEventインターフェースの代わりに使用できます。

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

ScrollCustomEvent

必須ではありませんが、このインターフェースは、ionScrollイベントの型付けを強化するために、CustomEventインターフェースの代わりに使用できます。

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でのシステムバウンスは無効にできないことに注意してください。これはOSレベルの設定です。
属性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スクロール中に発生します。このイベントはデフォルトで無効になっています。有効にするには、scrollEventstrueに設定してください。true
ionScrollEndスクロールが終了したときに発生します。このイベントはデフォルトで無効になっています。有効にするには、scrollEventstrueに設定してください。true
ionScrollStartスクロールが開始されたときに発生します。このイベントはデフォルトで無効になっています。有効にするには、scrollEventstrueに設定してください。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スクロールしない固定コンテンツに使用する必要があります。