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

コンテンツの切り替えやモバイルのボトムナビゲーションに使うタブUIの実装を3つのアプローチで比較。 バリアント・配置方向・アイコン統合・レスポンシブ対応など、実践的な使用例をインタラクティブに確認できます。

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 DesignCSS / Tailwind
バリアント/タイプ✅ 3種(default/outline/pills)✅ 3種(line/card/editable-card)⚠️ 自作(無制限)
配置方向✅ horizontal / vertical✅ top / bottom / left / right✅ 自由に設定可能
ボトムナビ配置✅ inverted prop✅ tabPosition="bottom"✅ fixed bottom-0 で自作
アイコン統合✅ leftSection prop✅ items内でicon指定⚠️ 手動で配置
セグメント切り替え❌ なし✅ Segmented コンポーネント⚠️ 自作
タブ追加/削除❌ 非対応✅ editable-card タイプ⚠️ 自作(手間が大きい)
カラー個別設定✅ タブごとにcolor設定可⚠️ CSS上書きで対応✅ 自由に設定可能
テーマ連携✅ MantineProvider✅ ConfigProvider✅ CSS変数で管理
アクセシビリティ✅ WAI-ARIA準拠✅ WAI-ARIA準拠⚠️ 実装者次第
TypeScript✅ 完全サポート✅ 完全サポート✅ 完全サポート
バンドルサイズ追加⚠️ 中⚠️ 中✅ ゼロ追加

選択のポイント

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