6日でできる 新HTML&CSS入門|Bootstrapのテーブル

表にclassを加えるだけで、データはもっと見やすくなる。
Bootstrapのテーブル機能を使って、一覧表・比較表・管理画面の表をすばやく整えよう。

WebサイトやWebアプリでは、情報を表形式で見せたい場面がたくさんあります。たとえば、社員一覧、商品リスト、料金表、予約状況、成績表、売上データ、比較表などです。こうしたデータを整理して表示するために使うのがテーブルです。

HTMLだけでもtable、tr、th、tdなどを使って表を作れます。しかし、標準のHTMLテーブルは見た目がシンプルで、そのままでは少し読みにくく感じることがあります。枠線を付けたり、行ごとに背景色を変えたり、マウスを乗せた行を分かりやすくしたりするには、通常はCSSを追加して調整します。

Bootstrapを使うと、table、table-striped、table-bordered、table-hoverなどのclassを指定するだけで、見やすいテーブルを簡単に作れます。表の基本デザイン、しましま表示、枠線、ホバー効果、コンパクト表示、色付きテーブル、レスポンシブ対応などを、classの組み合わせで実現できます。

この記事では、Bootstrapのテーブル機能について、基本的なHTML構造、主要classの意味、表の見出しと本体の分け方、行見出しと列見出しの指定、レスポンシブ対応の考え方を、サンプルHTMLを使いながら分かりやすく解説していきます。

Bootstrapテーブルとは

Bootstrapテーブルとは、HTMLのtableにBootstrapが用意しているclassを追加して、見やすく整えた表のことです。

通常のHTMLテーブルは、情報を行と列で整理するための構造を作ります。Bootstrapを使うと、その構造にデザインを追加できます。たとえば、tableを指定するとBootstrap標準のテーブルデザインが適用されます。さらにtable-stripedを追加すると、1行ごとに背景色が変わります。table-borderedを追加すると、セルに枠線が付きます。

class役割
tableBootstrap標準のテーブルスタイルを適用する
table-striped行ごとに背景色を交互に変える
table-borderedセルに枠線を付ける
table-hoverマウスを乗せた行をハイライトする
table-sm行の高さを小さくしてコンパクトにする
table-responsive横に長い表をスクロール対応にする

Bootstrapテーブルのよいところは、classを追加するだけで表の見た目を切り替えられる点です。CSSを一から書かなくても、一覧表として読みやすいデザインをすぐに作れます。

図1:Bootstrapのclassでテーブルを見やすく整える

この図から分かること

Bootstrapテーブルでは、HTMLのtableにclassを追加することで、表の見た目を簡単に整えられます。tableで基本デザインを適用し、table-stripedでしましま表示、table-borderedで枠線、table-hoverで行のハイライトを加えられます。表の構造はHTMLで作り、見た目はBootstrapのclassで整えると考えると分かりやすいです。

テーブルが使われる場面

テーブルは、データを行と列で比較したり、一覧として見せたりするときに使います。単なるレイアウト目的ではなく、表形式の情報を扱うときに使うのが基本です。

テーブルが向いている場面
一覧表示社員一覧、商品一覧、予約一覧
比較表示料金プラン比較、機能比較
管理画面ユーザー管理、注文管理、在庫管理
集計結果売上表、成績表、アクセス数
スケジュール時間割、イベント日程、営業日

テーブルは、項目名と値の関係がはっきりしている情報に向いています。文章だけでは分かりにくい情報も、表にすると比較しやすくなります。

BootstrapをCDNで読み込む

今回のサンプルでは、Bootstrap 5をCDN経由で読み込みます。CDNを使うと、Bootstrapのファイルを自分でダウンロードしなくても、インターネット上のCSSやJavaScriptを読み込んで利用できます。

CSSはhead内に読み込みます。

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">

JavaScriptはbodyの終わり付近で読み込みます。

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

テーブルの見た目を整えるだけであれば、主にCSSが働きます。ただし、Bootstrapのほかのコンポーネントを使う場合に備えて、JavaScriptも読み込んでおくとよいでしょう。

読み込み役割
Bootstrap CSSテーブル、ボタン、フォーム、余白などの見た目を整える
Bootstrap JavaScript動きのあるコンポーネントを動かす
CDNインターネット上のBootstrapファイルを読み込む

CDNを使う場合はインターネット接続が必要です。オフライン環境で学習する場合は、BootstrapのCSSやJavaScriptをダウンロードして、ローカルのcssフォルダーやjsフォルダーから読み込む方法を使います。

テーブルの基本構造

Bootstrapを使う場合でも、テーブルの基本構造は通常のHTMLと同じです。tableで表全体を作り、trで行を作り、thやtdでセルを作ります。

<table class="table">
  <thead>
    <tr>
      <th scope="col">商品番号</th>
      <th scope="col">商品名</th>
      <th scope="col">カテゴリ</th>
      <th scope="col">在庫数</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">P001</th>
      <td>木製デスク</td>
      <td>家具</td>
      <td>12</td>
    </tr>
  </tbody>
</table>

theadは表の見出し部分、tbodyは表の本体部分を表します。見出し行とデータ行を分けておくと、表の構造が分かりやすくなります。

タグ・属性役割
table表全体を作る
thead表の見出し部分をまとめる
tbody表の本体データ部分をまとめる
tfoot表のフッター部分をまとめる
tr表の1行を作る
th見出しセルを作る
td通常のデータセルを作る
scope="col"列見出しであることを示す
scope="row"行見出しであることを示す

Bootstrapのclassは、これらのHTML構造に対して見た目を整える役割を持ちます。まずはHTMLで正しい表構造を作り、そのうえでBootstrapのclassを追加しましょう。

BootstrapテーブルのサンプルHTML

ここでは、商品在庫一覧を表示するBootstrapテーブルを作成します。商品番号、商品名、カテゴリ、在庫数の4列を用意し、しましま表示、枠線、ホバー効果を追加します。

ファイル名: lesson55_1.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Bootstrap テーブルサンプル 商品在庫一覧</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-5">
    <h1 class="mb-4">商品在庫一覧</h1>

    <table class="table table-striped table-bordered table-hover">
      <thead>
        <tr>
          <th scope="col">商品番号</th>
          <th scope="col">商品名</th>
          <th scope="col">カテゴリ</th>
          <th scope="col">在庫数</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th scope="row">P001</th>
          <td>木製デスク</td>
          <td>家具</td>
          <td>12</td>
        </tr>
        <tr>
          <th scope="row">P002</th>
          <td>ワイヤレスマウス</td>
          <td>PC周辺機器</td>
          <td>35</td>
        </tr>
        <tr>
          <th scope="row">P003</th>
          <td>ステンレスボトル</td>
          <td>生活雑貨</td>
          <td>8</td>
        </tr>
      </tbody>
    </table>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

ブラウザの表示例

ブラウザで表示すると、ページ上部に「商品在庫一覧」という見出しが表示されます。その下に、商品番号、商品名、カテゴリ、在庫数の4列を持つテーブルが表示されます。

tableによってBootstrap標準のテーブルデザインが適用され、table-stripedによって行ごとに背景色が交互に変わります。table-borderedによってセルに枠線が付き、table-hoverによってマウスを乗せた行がハイライトされます。

このように、Bootstrapでは複数のclassを組み合わせることで、テーブルの見た目を簡単に強化できます。

サンプルHTMLの特徴

今回のサンプルでは、Bootstrapのテーブルclassを組み合わせています。

class・タグ役割
containerページ内容を読みやすい幅で中央に配置する
mt-5上方向に大きめの余白を付ける
mb-4見出しの下に余白を付ける
tableBootstrap標準のテーブルスタイルを適用する
table-striped行ごとに背景色を交互に表示する
table-bordered表全体に枠線を表示する
table-hoverマウスを乗せた行をハイライトする
thead表の見出し行をまとめる
tbody表の本体データをまとめる
th scope="col"列見出しを示す
th scope="row"行見出しを示す

テーブルでは、見た目だけでなく構造も大切です。theadとtbodyを使って見出しと本体を分け、thにscopeを指定しておくと、表の意味が分かりやすくなります。

図2:table-striped、table-bordered、table-hoverの違い

この図から分かること

Bootstrapテーブルでは、tableを基本にして、必要なclassを追加して見た目を変えます。table-stripedは行ごとの背景色、table-borderedは枠線、table-hoverはマウスを乗せた行の強調を担当します。classを組み合わせることで、用途に合ったテーブルを作れます。

tableはBootstrapテーブルの基本class

Bootstrapでテーブルを整える場合、まずtableを指定します。

<table class="table">

tableを指定すると、余白や罫線、文字の配置など、Bootstrap標準のテーブルスタイルが適用されます。ほかのテーブルclassを使う場合でも、基本としてtableを一緒に指定します。

指定効果
tableなしブラウザ標準の表に近い見た目
tableありBootstrap標準の整った表になる

Bootstrapテーブルを使うときは、まずtableを付ける、と覚えておきましょう。そのうえで、しましま表示や枠線などを追加していきます。

table-stripedで行を見分けやすくする

table-stripedは、行ごとに背景色を交互に変えるclassです。データが多い表では、横方向に目線を動かすときに、どの行を見ているのか分かりにくくなることがあります。

<table class="table table-striped">

table-stripedを使うと、1行ごとの区切りが視覚的に分かりやすくなります。社員一覧、商品一覧、注文一覧など、複数行のデータを扱う表に向いています。

向いている表理由
社員一覧行ごとに人物情報を追いやすい
商品一覧商品ごとの情報を見分けやすい
注文一覧注文単位で確認しやすい
管理画面の一覧データ量が多くても読みやすい

table-stripedは、シンプルなclassですが、表の読みやすさを大きく改善できます。

table-borderedで枠線を付ける

table-borderedは、テーブル全体に枠線を付けるclassです。セルとセルの区切りがはっきりするため、項目の対応関係を見やすくできます。

<table class="table table-bordered">

枠線があると、列や行の境界がはっきりします。比較表や一覧表など、項目ごとの区切りを明確にしたい場合に便利です。

向いている表理由
料金表プランごとの差が見やすい
機能比較表項目と対応内容を追いやすい
在庫表数値やカテゴリの区切りが分かりやすい
申込一覧入力項目のまとまりが分かりやすい

table-borderedを使うと、表らしい見た目になります。情報をきっちり整理して見せたい場合に使いやすいclassです。

table-hoverで操作しやすくする

table-hoverは、マウスポインタを乗せた行をハイライトするclassです。

<table class="table table-hover">

管理画面や一覧画面では、ユーザーがどの行を見ているのか分かりやすいことが大切です。table-hoverを使うと、マウスを乗せた行が強調されるため、行単位の確認がしやすくなります。

向いている表理由
管理画面の一覧操作対象の行を確認しやすい
会員一覧どの会員情報を見ているか分かりやすい
商品一覧編集や詳細確認の対象を見つけやすい
注文一覧注文単位で視線を合わせやすい

table-hoverは、クリック操作や詳細確認を行う一覧表と相性がよいclassです。

thead、tbody、tfootで表を分ける

HTMLのテーブルでは、thead、tbody、tfootを使って、表の見出し、本体、フッターを分けることができます。

タグ役割
thead表の見出し部分
tbody表の本体データ部分
tfoot表の合計や補足などのフッター部分

たとえば、売上一覧のような表では、theadに列名、tbodyに明細、tfootに合計金額を入れることがあります。

<table class="table table-bordered">
  <thead>
    <tr>
      <th scope="col">月</th>
      <th scope="col">売上</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>4月</td>
      <td>250,000円</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <th scope="row">合計</th>
      <td>250,000円</td>
    </tr>
  </tfoot>
</table>

見出し、本体、フッターを分けると、表の構造が明確になります。データが多い表ほど、HTMLの構造を丁寧に書くことが大切です。

scopeで見出しの方向を示す

thにはscope属性を指定できます。scopeは、その見出しセルが列に対する見出しなのか、行に対する見出しなのかを示す属性です。

指定意味
scope="col"列見出しを表す
scope="row"行見出しを表す

サンプルでは、thead内のthにscope="col"を指定しています。これは、商品番号、商品名、カテゴリ、在庫数が列の見出しであることを示します。

tbody内の先頭セルにはscope="row"を指定しています。これは、P001、P002、P003がそれぞれの行を表す見出しであることを示します。

<th scope="col">商品番号</th>
<th scope="row">P001</th>

scopeを指定すると、表の構造がより分かりやすくなります。見た目だけではなく、HTMLの意味を整理するためにも役立ちます。

table-responsiveで横スクロールに対応する

テーブルは列数が多くなると、スマートフォンの画面幅に収まりにくくなります。その場合は、tableをdivで囲み、親要素にtable-responsiveを指定します。

<div class="table-responsive">
  <table class="table table-striped table-bordered">
    表の内容
  </table>
</div>

table-responsiveを使うと、画面幅が狭いときに横スクロールで表を確認できるようになります。列を無理に縮めて読みにくくするよりも、横スクロールできる形にしたほうが見やすい場合があります。

状況対応
列数が少ない通常のtableで表示しやすい
列数が多いtable-responsiveで横スクロール対応にする
スマホで文字が詰まる表を横スクロールにする
比較表が横に長いtable-responsiveが便利

テーブルはスマートフォン対応で崩れやすい要素です。Bootstrapではtable-responsiveを使うことで、横に長い表も扱いやすくなります。

図3:table-responsiveでスマートフォンでも表を確認しやすくする

この図から分かること

列数が多いテーブルは、スマートフォンの画面幅では収まりにくくなります。table-responsiveを使うと、表を横スクロールで確認できるようになります。無理に列幅を狭くするのではなく、情報を保ったまま表示しやすくする方法として便利です。

Bootstrapテーブルのバリエーション

Bootstrapには、テーブルの見た目を変えるclassがいくつも用意されています。用途に合わせてclassを追加することで、表の雰囲気を変えられます。

class効果・用途
table-sm行の高さを小さくしてコンパクトにする
table-darkテーブル全体を暗い配色にする
table-primary青系の強調色を使う
table-success緑系の配色を使う
table-danger赤系の配色を使う
table-warning黄色系の配色を使う
table-info水色系の配色を使う

たとえば、管理画面で多くのデータを表示したい場合はtable-smが便利です。行の高さが少し小さくなるため、限られた画面に多くの情報を表示しやすくなります。

<table class="table table-sm table-bordered">

色付きのclassは、状態や意味を表すときに使いやすいです。たとえば、成功した処理にはtable-success、注意が必要な情報にはtable-warning、危険やエラーに関係する情報にはtable-dangerを使うことがあります。

行やセルだけに色を付ける

Bootstrapでは、テーブル全体ではなく、特定の行やセルだけに色を付けることもできます。

<tr class="table-success">
  <td>公開中</td>
  <td>通常表示</td>
</tr>
<tr class="table-warning">
  <td>確認中</td>
  <td>注意が必要</td>
</tr>
class意味の例
table-success成功、完了、正常
table-warning注意、確認中
table-danger危険、エラー、削除対象
table-info補足情報
table-secondary控えめな情報

行やセルに色を付けると、状態を視覚的に伝えやすくなります。ただし、色だけに頼ると見分けにくい場合もあるため、文字でも状態を説明することが大切です。

Bootstrapテーブルを使うときの実用ポイント

Bootstrapテーブルを使うときは、見た目だけでなく、情報の読みやすさも意識します。

ポイント内容
列数を増やしすぎない列が多いとスマートフォンで読みにくくなる
見出しを分かりやすくするthで項目名を明確にする
theadとtbodyを分ける表の構造を整理する
scopeを指定する見出しの方向を分かりやすくする
table-responsiveを使う横に長い表をスマートフォン対応にする
table-hoverを使う一覧画面で行を追いやすくする
色を使いすぎない強調したい意味に合わせて使う

テーブルは、情報量が多くなりやすい部品です。すべての情報を詰め込むよりも、本当に必要な項目を整理して表示することが大切です。

Bootstrapテーブルでよくある失敗

Bootstrapテーブルを使うときは、いくつかの失敗が起こりやすいです。

よくある失敗原因対策
Bootstrapの見た目にならないCSSを読み込んでいないlinkのURLやパスを確認する
しましま表示にならないtable-stripedを指定していないtableと一緒にtable-stripedを指定する
枠線が出ないtable-borderedを指定していないtable-borderedを追加する
スマホで横にはみ出すtable-responsiveを使っていないtableをdiv class="table-responsive"で囲む
表の意味が分かりにくいtheadやthを使っていない見出し行をtheadとthで整理する
色の意味が伝わりにくい色だけで状態を表している文字でも状態を説明する

Bootstrapのclassは便利ですが、HTML構造が崩れていると読みやすい表になりません。table、thead、tbody、tr、th、tdの基本構造を正しく書いたうえで、Bootstrapのclassを追加しましょう。

Bootstrapテーブルでデータを見やすくする考え方

Bootstrapのテーブル機能を使うと、HTMLの表を簡単に見やすく整えられます。tableを基本にし、table-striped、table-bordered、table-hoverなどを組み合わせることで、行の区切り、セルの境界、操作時のハイライトを追加できます。

データが多い場合は、theadとtbodyを分けて構造を整理しましょう。列見出しにはscope="col"、行見出しにはscope="row"を指定すると、表の意味がより分かりやすくなります。列数が多くスマートフォンで表示しにくい場合は、table-responsiveを使って横スクロール対応にします。

Bootstrapテーブルは、社員一覧、商品リスト、料金表、管理画面、比較表など幅広い場面で使えます。classを追加するだけで見た目を整えられるため、まずは基本のtable、table-striped、table-bordered、table-hoverから試し、必要に応じてtable-smやtable-responsiveなどを組み合わせていきましょう。