Radix で、FAQ アコーディオンメニューを実装する

要約
Radix のアコーディオンコンポーネントやアイコンコンポーネントを使って、FAQ のアコーディオンメニューを作成しています。
意見はこのエリアに表示されます
アイキャッチ画像

Radix で、FAQ アコーディオンメニューを実装する

Radix を使って FAQ アコーディオンメニューを React アプリに実装する方法を解説します。シンプルでアクセシブルなコンポーネントを少ないコード量で構築できます。コアとなる UI コンポーネントの実装を Radix に任せることで、デザインに集中できるのもポイントです。

完成イメージはこちら:

Radix の特徴

Radix は、React で使えるオープンソースの UI コンポーネントライブラリで、アクセシビリティや柔軟性を重視しています。@radix-ui/react-accordion はその中でも特に便利なコンポーネントで、FAQ などのアコーディオン形式の表示を簡単に実装できます。

比較: HeadlessUI や Framer Motion

  • HeadlessUI: アクセシブルなコンポーネントを提供しますが、スタイルを一からカスタマイズする必要があります。
  • Framer Motion: アニメーションに特化していますが、UI ロジックは自前で組む必要があります。
  • Radix: デフォルトでアクセシブルな UI コンポーネントが揃っていて、カスタマイズも簡単です。多くのプロジェクトにフィットします。

Radix のドキュメントはこちら:

インストール

まずは必要なパッケージをインストールします。

実装環境

  • React 18+
  • Radix UI (Accordion)

アコーディオンメニューの実装

以下のコードでは、Radix のアコーディオンコンポーネントを使って、FAQ のアコーディオンメニューを作成しています。

このコードを使うことで、質問をクリックすると回答が表示されるシンプルな FAQ アコーディオンメニューを作成できます。

各コンポーネントの説明

  • Accordion: 複数のアコーディオンアイテムをラップするためのコンテナです。type="single" を指定することで、一度に一つのアイテムだけを展開できます。

  • AccordionItem: 個別のアコーディオン項目を定義するコンポーネントです。FAQ の各質問と回答がこの中に入ります。

  • AccordionTrigger: 質問部分のトリガーとなるコンポーネントです。ユーザーがクリックすると回答が表示されます。

  • AccordionContent: トリガーがクリックされた際に表示されるコンテンツ部分です。ここに回答を記述します。

スタイリング

以下は CSS コードです。

まとめ

Radix のアコーディオンコンポーネントを使うことで、アクセシブルかつ使いやすい FAQ メニューを簡単に実装できます。このように、Radix のコンポーネントはヘッドレスで、必要なスタイルを自由にカスタマイズできるため、デザインとアクセシビリティのバランスをとりつつ、直感的に使用することができます。

Explore More
関連記事はありません。