タブバー / ボトムナビ(Tab Bar / Bottom Navigation)

コンテンツの切り替えやモバイルのボトムナビゲーションに使うタブUIを、Mantine・Ant Design・shadcn/ui・Chakra UI・CSS/Tailwind の5種で比較。 バリアント・配置方向・アイコン統合・レスポンシブ対応など、実践的な使用例をインタラクティブに確認できます。

Mantine Tabs

Mantineが提供する高機能タブコンポーネント。default・outline・pillsの3バリアントと、 horizontal / verticalの2方向をサポート。invertedでボトムナビ風の配置も可能。

3バリアントvertical対応inverted(ボトム配置)カラー個別設定アクセシビリティ内蔵
読み込み中...
tsx
'use client';
import { useState } from 'react';
import { MantineProvider, Tabs } from '@mantine/core';
import '@mantine/core/styles.css';

const tabs = [
  { value: 'home', icon: '🏠', label: 'ホーム' },
  { value: 'search', icon: '🔍', label: '検索' },
  { value: 'notifications', icon: '🔔', label: '通知' },
  { value: 'profile', icon: '👤', label: 'プロフィール' },
];

export function MantineTabBarDemo() {
  const [active, setActive] = useState('home');
  return (
    <MantineProvider>
      <Tabs value={active} onChange={(v) => setActive(v ?? 'home')} variant="pills">
        <Tabs.List>
          {tabs.map((tab) => (
            <Tabs.Tab key={tab.value} value={tab.value} leftSection={<span>{tab.icon}</span>}>
              {tab.label}
            </Tabs.Tab>
          ))}
        </Tabs.List>
        {tabs.map((tab) => (
          <Tabs.Panel key={tab.value} value={tab.value} pt="md">
            {tab.label}の内容
          </Tabs.Panel>
        ))}
      </Tabs>
    </MantineProvider>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Mantineを使ったタブバーUIを実装してください。
- 使用ライブラリ: @mantine/core の Tabs コンポーネント
- Tabs.List + Tabs.Tab + Tabs.Panel の3層構造
- バリアント: default(下線)/ outline(枠線)/ pills(ピル型)を切り替え可能に
- アイコン: leftSection prop でアイコンを各タブに配置
- inverted prop でタブリストを下部に配置(ボトムナビ風)
- keepMounted={false} で非アクティブパネルをアンマウント
- アクセシビリティ: WAI-ARIA準拠(Mantine標準で対応済み)

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

ライブラリ比較

項目MantineAnt Designshadcn/uiChakra UICSS / Tailwind
バリアント/タイプ✅ 3種(default/outline/pills)✅ 3種(line/card/editable-card)⚠️ デフォルトのみ(Tailwindでカスタム)✅ line / enclosed / outline / plain⚠️ 自作(無制限)
配置方向✅ horizontal / vertical✅ top / bottom / left / right⚠️ Tailwindで手動対応✅ orientation(horizontal / vertical)✅ 自由に設定可能
ボトムナビ配置✅ inverted prop✅ tabPosition="bottom"✅ Tailwindで対応✅ Tailwind で flex-col-reverse 対応✅ fixed bottom-0 で自作
アイコン統合✅ leftSection prop✅ items内でicon指定✅ children に自由に配置✅ children に自由に配置⚠️ 手動で配置
セグメント切り替え❌ なし✅ Segmented コンポーネント⚠️ 手動で実装⚠️ 非対応⚠️ 自作
タブ追加/削除❌ 非対応✅ editable-card タイプ⚠️ 手動で実装⚠️ 非対応⚠️ 自作(手間が大きい)
無効タブ✅ disabled prop⚠️ items で disabled 設定✅ disabled prop✅ disabled prop✅ button の disabled 属性
テーマ連携✅ MantineProvider✅ ConfigProvider✅ CSS変数で管理✅ ChakraProvider✅ CSS変数で管理
アクセシビリティ✅ WAI-ARIA準拠✅ WAI-ARIA準拠✅ WAI-ARIA(Radix UI)✅ WAI-ARIA準拠⚠️ 実装者次第
TypeScript✅ 完全サポート✅ 完全サポート✅ 完全サポート✅ 完全サポート✅ 完全サポート
バンドルサイズ追加⚠️ 中⚠️ 中✅ 使った分だけ⚠️ 中(emotion含む)✅ ゼロ追加

選択のポイント

  • Mantine — pillsバリアントでモダンなピル型タブ、invertedでボトムナビ風配置と、見た目のバリエーションが豊富。 タブごとのカラー設定やスタイルカスタマイズが柔軟で、デザインシステムに統合しやすい。 Mantineベースのプロジェクトなら第一選択。
  • Ant Design — TabsのtabPositionで上下左右の配置をサポートし、editable-cardで動的なタブ追加/削除も標準対応。 Segmentedコンポーネントでinitial風のセグメント切り替えも実現可能。 管理画面やダッシュボードで多用途に活躍。
  • shadcn/ui — Radix UIベースのTabsコンポーネントをTailwindでカスタマイズすることで、上部タブバーもボトムナビも実現できる。アイコンやバッジの配置も柔軟で、WAI-ARIAが標準装備。バリアントはデフォルトのみのためデザイン調整はTailwindで行う。
  • Chakra UI — Tabs.Indicator でスライドアニメーション付きのアクティブ表示が手軽に実現できる。 variant で4種のスタイルを切り替えられ、children に自由に JSX を配置できるためアイコン統合も容易。 セグメント切り替えやタブの動的追加が必要な場合は Ant Design を検討する。
  • CSS / Tailwind CSS — ゼロ依存で通常タブバーとボトムナビの両方を実装可能。デザインの完全なコントロールとバンドルサイズ最小化を両立。 アクセシビリティは自前で実装する必要があるが、要件にぴったり合ったカスタムUIを作れる。

タブバー(ボトムナビゲーション)は、画面下部に固定されたアイコン付きナビゲーションUI。スマートフォンアプリのメインナビゲーションとして広く使われる。

モバイルアプリ・PWA・スマートフォン向けWebアプリのメインナビゲーション。ホーム・検索・通知・プロフィールなど主要セクションへのアクセスに使われる。

主なバリエーション
  • ボトムタブ型(画面下固定)
  • トップタブ型(画面上固定)
  • アイコンのみ型
  • アイコン+ラベル型
  • アクティブ状態インジケーター付き型