ion-item
アイテムは、テキスト、アイコン、アバター、画像、入力、その他のネイティブまたはカスタム要素を含むことができる要素です。アイテムは、他のアイテムとともにリスト内の行としてのみ使用する必要があります。アイテムは、スワイプ、削除、並べ替え、編集などが可能です。
基本使用法
アイテムはテキストを左揃えにし、テキストがアイテムよりも広い場合は折り返します。Ionic Framework で提供される CSS ユーティリティを使用すると、この動作を変更できます。たとえば、以下の例のように .ion-text-nowrap
を使用します。テキストを変換するためにアイテムに追加できる他のクラスについては、CSS ユーティリティドキュメントを参照してください。
コンテンツタイプ
リスト内のアイテムにはさまざまな形式がありますが、通常は、サポートビジュアル、テキスト、メタデータ、アクション、コントロールの 5 つの異なるコンテンツタイプをサポートしています。ただし、これらのコンテンツタイプをすべて同時に使用すべきではありません。次のガイドでは、さまざまなコンテンツタイプと、アプリケーションでの適切な使用方法を示します。
サポートビジュアル
サポートビジュアルは、装飾的なアイコンまたはアイテムのその他の装飾です。サポートビジュアルの一般的な例としては、アバター、アイコン、サムネイルがあります。このコンテンツはアイテムの意図を理解するために必須ではないため、通常は aria-hidden="true"
を使用してスクリーンリーダーから隠されます。
アイコンボタンなど、ビジュアルがアイテムと対話するために必要な場合は、ビジュアルはサポートビジュアルではなくアクションです。
サポートビジュアルは、一貫した方法でレンダリングする必要があります。これにより、各アイテムの情報が解析しやすくなります。

リスト内の同じ側にビジュアルを配置する

同じリスト内で異なる配置でビジュアルをレンダリングしない
以下の例では、サポートビジュアルを使用して 2 つのリストを作成しています。最初のリストはアイコンを使用し、2 番目のリストはアバターを使用します。ビジュアルは装飾的なため、すべてに aria-hidden="true"
が設定されています。さらに、start
スロットに一貫して表示されます。
テキスト
テキストコンテンツタイプには、フォームコントロールのラベルまたはその他の表示テキストが含まれます。このテキストは、アイテムの意図を示す役割を果たします。テキストは短く要点を押さえるようにしてください。
アイテムの目的を明確にするためにもう少し文章が必要な場合は、リストの下部にあるノートに追加の文章を移動することを検討してください。アイテムを独自のリストに追加すると、テキストがどのアイテムに関連付けられているかが明確になります。

長いテキストをリストの外に移動する

アイテムに長いテキストを詰め込もうとしない
以下の例では、さまざまな種類のテキストを含むリストを作成しています。「名」と「姓」のラベルは、テキスト入力に入力する内容を示す役割を果たします。
トグルの「通知を許可する」ラベルの下には、ユーザーが通知を無効にできることを示す追加テキストがあります。このテキストは短いため、アイテム内に配置されています。
そのリストの下には、長いテキストを含むノートを含むテキストエリアを含む別のリストがあります。テキストエリアは、長いテキストが他のフィールドではなくテキストエリアに関連付けられていることを明確にするために、独自のリストに配置されました。
メタデータ
メタデータは、ステータステキストやカウントなど、アイテムの追加のコンテキストを提供します。バッジやノートなどのコンポーネントは、メタデータを表示するのに最適な方法です。
含めるメタデータの量を、最も関連性の高い情報のみに制限してください。

最も重要なメタデータのみを追加する

メタデータを過度に含めると、ユーザーを圧倒したり混乱させたりする可能性があるため、含めすぎないようにしてください。
開発者は、メタデータがどれほど重要であるかも検討する必要があります。ユースケースによっては、メタデータに注意を向けることがユーザーにとって役立つ場合もあれば、より重要な情報から気をそらしてしまう場合もあります。

最も重要なコンテンツを優先する。

優先度の高いメタデータは、他の重要なコンテンツから気をそらしてしまう可能性があります。
以下の例では、さまざまな種類のメタデータを含む 2 つのリストを作成しています。最初のリストでは、ノートを使用して、各 ToDo リストに含まれるタスクの数を示しています。
2 番目のリストは、iOS Mail アプリを模倣して受信トレイを表示します。このリストでは、「未読メッセージ」インジケーターを「開始」スロットに含み、タイムスタンプとカスタム詳細アイコンを「終了」スロットに含めるなど、カスタムメタデータを使用しています。「未読メッセージ」インジケーターは、ユーザーの注意を未読メッセージに向けるために青色で強調表示されていますが、タイムスタンプはより控えめです。
アクション
アクションとは、アクティブ化すると何らかの処理を行うインタラクティブな要素です。アイテムには、1 行に複数のアクションを表示できます。ただし、開発者は、各アクションのタップターゲットが使用できるのに十分な大きさであることを確認する必要があります。
開発者は、ネストされたインタラクティブの作成を避ける必要があります。これは、スクリーンリーダーでのユーザーエクスペリエンスを損なう可能性があるためです。たとえば、button
プロパティが true
に設定されている場合、開発者はアイテムのメインコンテンツ内にボタンを追加することを避ける必要があります。
アクションは、アイテムスライドコンポーネントを使用することで追加できます。アクションは、アイテムスライドを使用せずにアイテム内に直接配置することもできますが、これは 2 つ以下のアクションに制限する必要があります。

アイテムスライドを使用して、アイテムをスワイプすることで複数のアクションを表示します。

アイテム内に 2 つ以上のアクションを配置しない。
以下の例では、連絡先のリストを作成しています。各アイテムは、そのアイテムの完全な連絡先ページに移動することを目的としたスタブボタンです。各アイテムに関連付けられた追加のアクションがあり、ユーザーはアイテムをスワイプすることで表示できます。
コントロール
コントロールは、チェックボックス、入力、ラジオなどのフォームコンポーネントです。リスト内の各アイテムは、画面スペースの制約上、最大で 2 つのコントロールを持つ必要があります。
ヘルプテキストや文字数などのメタデータは、リストビューのフォームコントロールには使用しないでください。そのようなメタデータが必要な場合は、フォームコントロールをリストの外に配置する必要があります。入力は、リストの外に入力コンテナーを視覚的に定義するのに最適な方法です。

メタデータを含む入力をリストの外に配置する。

リスト内に入力のメタデータを配置しない。
あるいは、メタデータをリストの最下部にある注釈に配置することもできます。

入力のメタデータは、リストの最後に配置してください。

リスト内に入力のメタデータを配置しない。
通常、項目には2つ以下のコントロールが必要です。より多くのコントロールが必要な場合は、項目からアクセスできるモーダルに追加することを検討してください。

追加のコントロールは、項目からアクセスできるサブメニューに移動してください。

項目内に3つ以上のコントロールを使用しないでください。
以下の例では、ToDoタスクのリストを作成しています。各項目にはチェックボックスと入力欄があります。チェックボックスはタスクを完了としてマークし、入力欄はタスクの名前を変更できるようにします。
クリック可能な項目
項目にhref
またはbutton
プロパティが設定されている場合、その項目は「クリック可能」とみなされます。クリック可能な項目には、操作可能であることを示す視覚的な違いがいくつかあります。たとえば、クリック可能な項目は、md
モードでアクティブ化されるとリップル効果を受け、ios
モードでアクティブ化されるとハイライト表示され、ios
モードではデフォルトで詳細矢印が表示されます。
詳細矢印
デフォルトでは、クリック可能な項目はios
モードで右矢印アイコンを表示します。クリック可能な要素で右矢印アイコンを非表示にするには、detail
プロパティをfalse
に設定します。自然に表示されない項目に右矢印アイコンを表示するには、detail
プロパティをtrue
に設定します。
項目線
項目にはデフォルトでインセットされた下線が表示されます。この線は左側にパディングがあり、"start"
スロットに挿入されたコンテンツの下には表示されません。lines
プロパティは"full"
または"none"
に変更でき、それぞれ全幅の線または線なしを表示します。
項目内のボタン
ボタンは、項目の外にある場合よりも項目内にある場合は小さくスタイルされます。ボタンのサイズを項目の外にあるボタンと一致させるには、size
属性を"default"
に設定します。
項目入力
テーマ
色
CSSシャドウパーツ
CSSカスタムプロパティ
ガイドライン
以下のガイドラインは、リスト項目を理解しやすく使いやすくするのに役立ちます。
- 項目は、リスト内で使用する必要があります。
- リスト内の項目は、一貫した形式で表示する必要があります。たとえば、項目が装飾的なアイコンを表示する場合、アイコンは項目間で同じように配置する必要があります。
- 項目はネストされたインタラクティブ要素をレンダリングしないでください。ネストされたインタラクティブ要素が使用されている場合、スクリーンリーダーは正しいインタラクティブ要素を選択できません。たとえば、
button="true"
を持つion-item
内にボタンを配置しないでください。 - コンテンツタイプを正しく使用してください。Itemコンポーネントは、リストの行として設計されており、汎用コンテナとして使用するべきではありません。
アクセシビリティ
キーボード操作
次のいずれかの条件が満たされる場合、<ion-item>
には次のキーボード操作があります。
button
プロパティが"true"
に設定されている場合、ネイティブの<button>
要素がレンダリングされます。href
プロパティが設定されている場合、ネイティブの<a>
要素がレンダリングされます。routerLink
プロパティが設定されている場合、ネイティブの<a>
要素がレンダリングされます。
キー | 説明 |
---|---|
Tab | フォーカスを次のフォーカス可能な要素に移動します。 |
Shift + Tab | フォーカスを前のフォーカス可能な要素に移動します。 |
ボタン
<ion-item>
がネイティブの<button>
要素をレンダリングする場合、キーボード操作はbuttonロールと同じパターンに従います。
キー | 説明 |
---|---|
Enter | 項目をアクティブ化し、そのclick イベントをトリガーします。項目がフォーム内にあり、type が"submit" に設定されている場合、フォームを送信します。 |
Space | 項目をアクティブ化し、そのclick イベントをトリガーします。項目のtype が"submit" であっても、フォームを送信しません。 |
アンカー
<ion-item>
がネイティブの<a>
要素をレンダリングする場合、キーボード操作はlinkロールと同じパターンに従います。
キー | 説明 |
---|---|
Enter | 項目をアクティブ化し、リンク先のページに移動するか、ページ内のターゲットにフォーカスを移動します。 |
プロパティ
button
説明 | true の場合、buttonタグがレンダリングされ、項目がタップ可能になります。 |
属性 | button |
型 | boolean |
デフォルト | false |
color
説明 | アプリケーションのカラーパレットから使用する色。デフォルトのオプションは、"primary" 、"secondary" 、"tertiary" 、"success" 、"warning" 、"danger" 、"light" 、"medium" 、および"dark" です。色に関する詳細については、テーマを参照してください。 |
属性 | color |
型 | "danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string | undefined |
デフォルト | undefined |
detail
説明 | true の場合、項目の詳細矢印が表示されます。mode がios で、href またはbutton プロパティが存在しない限り、デフォルトはfalse です。 |
属性 | detail |
型 | boolean | undefined |
デフォルト | undefined |
detailIcon
説明 | detail がtrue に設定されている場合に使用するアイコン。 |
属性 | detail-icon |
型 | string |
デフォルト | chevronForward |
disabled
説明 | true の場合、ユーザーは項目を操作できません。 |
属性 | disabled |
型 | boolean |
デフォルト | false |
download
説明 | この属性は、ブラウザにURLに移動するのではなくダウンロードするように指示するため、ユーザーはローカルファイルとして保存するように求められます。属性に値がある場合、保存プロンプトで事前に設定されたファイル名として使用されます(ユーザーは必要に応じてファイル名を変更できます)。 |
属性 | download |
型 | string | undefined |
デフォルト | undefined |
href
説明 | ハイパーリンクが指すURLまたはURLフラグメントが含まれます。このプロパティが設定されている場合、アンカータグがレンダリングされます。 |
属性 | href |
型 | string | undefined |
デフォルト | undefined |
lines
説明 | 項目の下線をどのように表示するか。 |
属性 | lines |
型 | "full" | "inset" | "none" | undefined |
デフォルト | undefined |
mode
説明 | モードは、使用するプラットフォームのスタイルを決定します。 |
属性 | mode |
型 | "ios" | "md" |
デフォルト | undefined |
rel
説明 | ターゲットオブジェクトとリンクオブジェクトの関係を指定します。値は、リンクタイプのスペース区切りのリストです。 |
属性 | rel |
型 | string | undefined |
デフォルト | undefined |
routerAnimation
説明 | ルーターを使用する場合、href を使用して別のページに移動するときのトランジションアニメーションを指定します。 |
属性 | undefined |
型 | ((baseEl: any, opts?: any) => Animation) | undefined |
デフォルト | undefined |
routerDirection
説明 | ルーターを使用する場合、href を使用して別のページに移動するときのトランジションの方向を指定します。 |
属性 | router-direction |
型 | "back" | "forward" | "root" |
デフォルト | 'forward' |
target
説明 | リンク先のURLを表示する場所を指定します。href が指定されている場合にのみ適用されます。特別なキーワード:"_blank" 、"_self" 、"_parent" 、"_top" 。 |
属性 | target |
型 | string | undefined |
デフォルト | undefined |
type
説明 | ボタンのタイプ。onclick またはbutton プロパティが存在する場合にのみ使用されます。 |
属性 | type |
型 | "button" | "reset" | "submit" |
デフォルト | 'button' |
イベント
このコンポーネントで使用できるイベントはありません。
メソッド
このコンポーネントで使用できるパブリックメソッドはありません。
CSSシャドウパーツ
名前 | 説明 |
---|---|
detail-icon | 項目のシェブロンアイコン。detail="true" の場合にのみ適用されます。 |
native | すべての子要素をラップするネイティブのHTMLボタン、アンカー、またはdiv要素。 |
CSSカスタムプロパティ
- iOS
- MD
名前 | 説明 |
---|---|
--background | 項目の背景 |
--background-activated | 押されたときの項目の背景。注意:これを設定すると、マテリアルデザインのリップルが妨げられます。 |
--background-activated-opacity | 押されたときの項目の背景の不透明度 |
--background-focused | タブキーでフォーカスされたときの項目の背景 |
--background-focused-opacity | タブキーでフォーカスされたときの項目の背景の不透明度 |
--background-hover | マウスオーバー時の項目の背景 |
--background-hover-opacity | マウスオーバー時の項目の背景の不透明度 |
--border-color | 項目の線の色 |
--border-radius | 項目の線の半径 |
--border-style | 項目の線のスタイル |
--border-width | 項目の線の幅 |
--color | 項目の色 |
--color-activated | 押されたときの項目の色 |
--color-focused | タブキーでフォーカスされたときの項目の色 |
--color-hover | マウスオーバー時の項目の色 |
--detail-icon-color | 項目の詳細アイコンの色 |
--detail-icon-font-size | 項目の詳細アイコンのフォントサイズ |
--detail-icon-opacity | アイテム詳細アイコンの不透明度 |
--inner-border-width | アイテムの内側ボーダーの幅 |
--inner-box-shadow | アイテム内側のボックスシャドウ |
--inner-padding-bottom | アイテム内側の下パディング |
--inner-padding-end | アイテム内側の、左から右方向の場合は右パディング、右から左方向の場合は左パディング |
--inner-padding-start | アイテム内側の、左から右方向の場合は左パディング、右から左方向の場合は右パディング |
--inner-padding-top | アイテム内側の上パディング |
--min-height | アイテムの最小高さ |
--padding-bottom | アイテムの下パディング |
--padding-end | アイテムの、左から右方向の場合は右パディング、右から左方向の場合は左パディング |
--padding-start | アイテムの、左から右方向の場合は左パディング、右から左方向の場合は右パディング |
--padding-top | アイテムの上パディング |
--ripple-color | アイテムのリップル効果の色 |
--transition | アイテムのトランジション |
名前 | 説明 |
---|---|
--background | 項目の背景 |
--background-activated | 押されたときの項目の背景。注意:これを設定すると、マテリアルデザインのリップルが妨げられます。 |
--background-activated-opacity | 押されたときの項目の背景の不透明度 |
--background-focused | タブキーでフォーカスされたときの項目の背景 |
--background-focused-opacity | タブキーでフォーカスされたときの項目の背景の不透明度 |
--background-hover | マウスオーバー時の項目の背景 |
--background-hover-opacity | マウスオーバー時の項目の背景の不透明度 |
--border-color | 項目の線の色 |
--border-radius | 項目の線の半径 |
--border-style | 項目の線のスタイル |
--border-width | 項目の線の幅 |
--color | 項目の色 |
--color-activated | 押されたときの項目の色 |
--color-focused | タブキーでフォーカスされたときの項目の色 |
--color-hover | マウスオーバー時の項目の色 |
--detail-icon-color | 項目の詳細アイコンの色 |
--detail-icon-font-size | 項目の詳細アイコンのフォントサイズ |
--detail-icon-opacity | アイテム詳細アイコンの不透明度 |
--inner-border-width | アイテムの内側ボーダーの幅 |
--inner-box-shadow | アイテム内側のボックスシャドウ |
--inner-padding-bottom | アイテム内側の下パディング |
--inner-padding-end | アイテム内側の、左から右方向の場合は右パディング、右から左方向の場合は左パディング |
--inner-padding-start | アイテム内側の、左から右方向の場合は左パディング、右から左方向の場合は右パディング |
--inner-padding-top | アイテム内側の上パディング |
--min-height | アイテムの最小高さ |
--padding-bottom | アイテムの下パディング |
--padding-end | アイテムの、左から右方向の場合は右パディング、右から左方向の場合は左パディング |
--padding-start | アイテムの、左から右方向の場合は左パディング、右から左方向の場合は右パディング |
--padding-top | アイテムの上パディング |
--ripple-color | アイテムのリップル効果の色 |
--transition | アイテムのトランジション |
スロット
名前 | 説明 |
---|---|
`` | スロットが指定されていない場合、コンテンツは名前付きスロット間に配置されます。 |
end | コンテンツは、LTRの場合はアイテムテキストの右側に、RTLの場合は左側に配置されます。 |
start | コンテンツは、LTRの場合はアイテムテキストの左側に、RTLの場合は右側に配置されます。 |