タブバー / ボトムナビ(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の回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
ライブラリ比較
| 項目 | Mantine | Ant Design | CSS / 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を作れる。