記事内にはプロモーションが含まれています

【HTML/CSS】テーブルを中央寄せする全手法

【HTML/CSS】テーブルを中央寄せする全手法 HTML

Webサイトで表(テーブル)を作成していると、「表全体を画面の真ん中に配置したい」「セルの中の文字を上下左右の中央に揃えたい」という場面が頻繁に訪れます。

しかし、HTMLの align="center" 属性はすでに廃止されており、現在はCSSを使って制御する必要があります。

一言で「中央寄せ」と言っても、テーブルそのものの配置なのか、それともセル内のテキストの配置なのかによって、使うべきプロパティは全く異なります。

ここを混同してしまうと、「CSSを書いたのに動かない!」というトラブルの原因になります。

この記事では、HTMLのテーブル(tableタグ)における中央寄せについて、全体の配置からセル内の文字揃え、さらには画面のど真ん中に配置する応用テクニックまで、現在のWeb標準に合わせて徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はプログラミングスクールを運営
  • モットーは「利他の精神」
💻 本記事の検証環境(2026年2月確認)
  • OS:Windows 11 / macOS Sequoia
  • IDE:Visual Studio / VS Code / IntelliJ IDEA
  • その他:Chrome DevTools / 各言語最新安定版

※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。

1. テーブル「全体」を画面の中央に寄せる方法

まずは、テーブルそのものを画面(または親要素)の左右中央に配置する方法です。
これには、ブロック要素の中央寄せで定番の margin: auto; を使用します。

margin: 0 auto; を使った基本の配置

テーブル(<table>)はデフォルトでは左寄せになっていますが、CSSで左右の余白(margin)を auto に設定することで、ブラウザが余白を均等に計算し、中央に配置してくれます。

<table class="center-table">
  <tr>
    <th>商品名</th>
    <td>プレミアムプラン</td>
  </tr>
  <tr>
    <th>価格</th>
    <td>¥10,000</td>
  </tr>
</table>

<style>
.center-table {
  /* 左右の余白を自動にして中央寄せ */
  margin-left: auto;
  margin-right: auto;
  
  /* 分かりやすく枠線と幅を指定 */
  border: 1px solid #ccc;
  width: 80%; 
}
</style>

margin-left: auto;margin-right: auto; を指定することで、テーブルの左右に均等な余白が生まれ、結果として中央に配置されます。

実務ではショートハンドである margin: 0 auto;(上下0、左右自動)と記述するのが一般的です。

注意点として、テーブルの幅が width: 100%; になっていると、そもそも動く余地(余白)がないため中央寄せの効果が見えません。
幅を指定するか、コンテンツに合わせて伸縮させましょう。

2. セル内の「文字」を左右中央に寄せる方法

次は、テーブルの中身である「文字」や「画像」を、セルの中心に配置する方法です。
これはテキストの配置を制御する text-align プロパティを使用します。

text-align: center; の使い方

<th><td> に対して指定します。
テーブル全体に適用したい場合は table タグに指定しても継承されます。

<table class="text-center-table">
  <tr>
    <th>見出し(中央)</th>
    <td>データ(中央)</td>
  </tr>
</table>

<style>
.text-center-table th,
.text-center-table td {
  /* テキストを左右中央に配置 */
  text-align: center;
  
  border: 1px solid #ccc;
  padding: 10px;
  width: 200px;
}
</style>

text-align: center; を指定することで、セル内のテキストやインライン要素(画像など)が左右の中央に配置されます。

デフォルトでは、<th>(見出し)は最初から中央寄せ、<td>(データ)は左寄せになっているブラウザが多いため、<td> に明示的に指定することで見た目を統一できます。

3. セル内の「文字」を上下中央に寄せる方法

セルの高さがある場合、文字が上の方に寄ってしまうことがあります。
これを上下(垂直方向)の真ん中に配置するには、vertical-align プロパティを使用します。

vertical-align: middle; の使い方

<table class="vertical-center-table">
  <tr>
    <th>高さのある<br>見出し</th>
    <td>
      ここの文字を<br>
      上下中央に<br>
      したい
    </td>
  </tr>
</table>

<style>
.vertical-center-table th,
.vertical-center-table td {
  height: 150px; /* 高さを指定して検証 */
  border: 1px solid #ccc;
  
  /* テキストを上下中央に配置 */
  vertical-align: middle;
}
</style>

vertical-align: middle; を指定すると、セルの高さに対して文字が垂直方向の中央に来るように調整されます。

テーブルセル(table-cell)においては、このプロパティが非常に有効に機能します。
逆に「上揃えにしたい」場合は top、「下揃え」なら bottom を指定します。

4. 【応用】画面のど真ん中にテーブルを配置する

「ログイン画面のように、ページ全体の上下左右ど真ん中にテーブルをポンと置きたい」というケースもあります。

この場合は、margin ではなく、現代のレイアウト手法である Flexbox を親要素に使うのが最も簡単で確実です。

Flexboxを使った完全な中央寄せ

<div class="flex-container">
  <table class="login-table">
    <tr>
      <td>ID</td>
      <td><input type="text"></td>
    </tr>
    <tr>
      <td>PASS</td>
      <td><input type="password"></td>
    </tr>
  </table>
</div>

<style>
/* 親要素(画面全体) */
.flex-container {
  display: flex;
  justify-content: center; /* 左右中央 */
  align-items: center;     /* 上下中央 */
  height: 100vh;           /* 画面の高さいっぱいに広げる */
  background-color: #f0f0f0;
}

.login-table {
  background-color: #fff;
  padding: 20px;
  border: 1px solid #ccc;
}
</style>

テーブルを囲む親要素(.flex-container)に対し、display: flex; を指定してFlexboxを有効化します。

続けて justify-content: center; で水平方向の中央寄せ、align-items: center; で垂直方向の中央寄せを行います。

最後に height: 100vh; で親要素の高さを画面いっぱい(ビューポートの高さ)に設定することで、画面のど真ん中にテーブルが配置されます。

中央寄せができない時のチェックリスト

「コード通り書いたはずなのに動かない……」という場合、以下のポイントを確認してみてください。

1. インライン要素になっていないか?

margin: 0 auto; は、要素が ブロックレベル要素(display: block / table) でなければ効きません。

もし display: inline;inline-block になっている場合は、display: table;block に変更するか、親要素に text-align: center; を指定する必要があります。

2. width(幅)が指定されているか?

テーブル全体を margin で中央寄せする場合、幅が 100%(画面いっぱい)だと動くスペースがありません。

width: 80%;max-width: 600px; のように、親要素より小さい幅を指定しているか確認しましょう。

3. float や position が効いていないか?

float: left;position: absolute; が指定されていると、通常の文書の流れから外れるため、margin: auto; は無効になります。

この場合は float を解除するか、position に合わせた中央寄せのテクニック(left: 50%; transform: translate(-50%, 0); など)を使う必要があります。

HTML/CSSのスキルを活かして年収を上げる方法

以上、HTML/CSSでテーブルを中央寄せする方法について解説してきました。

なお、HTMLやCSSのスキルがある場合には、「副業で稼いで年収を上げる」といったことが可能です。
HTML/CSSのスキルを持つ人は多いものの、その分案件数も多く、副業エージェントやフリーランスエージェントを利用することで予想外の高単価案件が見つかることもあります。
エージェントサービスは、登録も利用もすべて完全無料なので、どんな求人や案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
エンジニアのキャリア・スキルアップ相談窓口
当ブログの読者に選ばれている、実績豊富な転職エージェントを厳選しました。
【転職】年収・環境を改善したい
年収アップにこだわりたい方 (平均アップ額138万円の実績)
未経験・経験者問わず幅広く探したい方
業界に精通した担当者に相談したい方
ゲーム業界への転職を志望する方
エンジニア未経験からキャリアを築く方
【独立】フリーランスとして稼ぎたい
国内最大級のフリーランス案件数から比較したい方
週1〜3日など柔軟な働き方を希望する方
【学習】スキルに不安のある方向け(格安スクール「デイトラ」)