横スクロール対応テーブルを作る方法【HTML/CSS・サンプルコード付き】

テーブル
無料ツール
テーブルを自由に作成

行数・列数・枠線・背景色・文字色・セル結合などを設定して、HTMLとCSSを自動生成できます。

テーブル作成ツールを使う
新しいタブで開きます

横スクロール対応テーブルを作る方法

横スクロール対応テーブルを作る方法を紹介します。このサンプルでは、10列ある横長のテーブルに横幅を設定し、表示領域に収まらない場合に横方向へスクロールして内容を確認できるテーブルを作成します。列数の多いテーブルでも各セルの文字を折り返さずに表示できるため、テーブルの構成を保ったまま横方向の情報を確認できます。

サンプルでは、テーブルにmin-width:1400px;を設定して一定の横幅を確保し、各セルにはwhite-space:nowrap;を指定して文字の折り返しを防いでいます。さらに、テーブルを囲む要素へoverflow-x:auto;を設定することで、テーブルの横幅が表示領域を超えた場合に横スクロールできるようにしています。JavaScriptは使用せず、HTMLとCSSだけで実装できます。

横スクロール対応テーブルは、商品比較表や料金表、スペック一覧、スケジュール表、会員一覧、管理画面のデータ一覧など、多くの列をまとめて表示したい場面に利用できます。HTMLでは「項目名」「内容」「分類」「状態」などの見出しや各セルの内容を変更でき、CSSではテーブルの最小横幅、セルの余白や枠線、見出し行の背景色などを調整できます。PCだけでなく表示領域の狭い画面でも、横方向へスクロールしながらテーブル全体の内容を確認できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

項目名 内容 分類 状態 担当 開始日 終了日 優先度 進捗 備考
項目A サンプル内容A 分類A 確認中 担当A 2026/06/01 2026/06/10 高 60% 備考A
項目B サンプル内容B 分類B 完了 担当B 2026/06/03 2026/06/12 中 100% 備考B
項目C サンプル内容C 分類C 未対応 担当C 2026/06/05 2026/06/15 低 0% 備考C

テーブルの横幅が表示領域を超えると横方向へスクロールできます。横へスクロールして、「項目名」から「備考」までのすべての列を確認できます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コードを指定 -->
  <meta charset="UTF-8">

  <!-- 表示幅を端末に合わせる -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>横スクロール対応テーブル</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- 横スクロール用の外枠 -->
  <div class="table-horizontal-scroll_wrap">

    <!-- 横幅が広いテーブル本体 -->
    <table class="table-horizontal-scroll_table">

      <thead>
        <tr>
          <th>項目名</th>
          <th>内容</th>
          <th>分類</th>
          <th>状態</th>
          <th>担当</th>
          <th>開始日</th>
          <th>終了日</th>
          <th>優先度</th>
          <th>進捗</th>
          <th>備考</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>項目A</td>
          <td>サンプル内容A</td>
          <td>分類A</td>
          <td>確認中</td>
          <td>担当A</td>
          <td>2026/06/01</td>
          <td>2026/06/10</td>
          <td>高</td>
          <td>60%</td>
          <td>備考A</td>
        </tr>

        <tr>
          <td>項目B</td>
          <td>サンプル内容B</td>
          <td>分類B</td>
          <td>完了</td>
          <td>担当B</td>
          <td>2026/06/03</td>
          <td>2026/06/12</td>
          <td>中</td>
          <td>100%</td>
          <td>備考B</td>
        </tr>

        <tr>
          <td>項目C</td>
          <td>サンプル内容C</td>
          <td>分類C</td>
          <td>未対応</td>
          <td>担当C</td>
          <td>2026/06/05</td>
          <td>2026/06/15</td>
          <td>低</td>
          <td>0%</td>
          <td>備考C</td>
        </tr>
      </tbody>

    </table>

  </div>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは「項目名」「内容」「分類」「状態」「担当」「開始日」「終了日」「優先度」「進捗」「備考」の10列を持つテーブルを作成します。CSSではテーブル本体に最小横幅を設定し、テーブルを囲む外枠に横スクロールを設定します。表示領域よりテーブルの横幅が大きくなった場合でも、表の列を縮めずに横方向へスクロールして内容を確認できます。

sample/
├── index.html
└── style.css

各ファイルの役割
index.htmlは横スクロール対応テーブルを構成するファイルです。「項目名」「内容」「分類」「状態」「担当」「開始日」「終了日」「優先度」「進捗」「備考」の見出しと、項目Aから項目Cまでのデータを記述しています。見出しや各セルの内容を変更したり、tbody内のtr要素を追加・削除してデータ行の数を変更したりできます。

style.cssはテーブルの横幅と横スクロール、セルのデザインを設定するファイルです。テーブルを囲む.table-horizontal-scroll_wrapにoverflow-x:auto;を設定し、テーブル本体にはmin-width:1400px;を指定しています。また、見出しセルとデータセルにはwhite-space:nowrap;を設定し、セル内の文字を折り返さずに表示します。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置し、2つのファイルを同じ階層へ保存します。index.htmlでは同じ階層にあるstyle.cssを読み込む構成になっているため、配置後にsample/index.htmlをブラウザで開くと横スクロール対応テーブルが表示されます。テーブルの横幅が表示領域を超えている場合は、横方向へスクロールすることで「項目名」から「備考」までのすべての列を確認できます。

カスタマイズできる内容
index.htmlでは、10列の見出しと各データセルの内容を変更できます。tbody内のtr要素を追加するとデータ行を増やすことができ、不要なtr要素を削除すると行数を減らせます。

style.cssでは、横スクロールエリアの最大横幅や余白、テーブル本体の最小横幅、セルの内側余白や枠線、見出し行の背景色などを変更できます。white-space:nowrap;は見出しセルとデータセルの文字を折り返さないための設定です。

数値調整
style.css
max-width:800px;
横スクロールエリアの最大横幅です。値を大きくすると一度に表示できる横方向の範囲が広がり、小さくすると表示範囲が狭くなります。

margin:40px auto;
横スクロールエリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。autoによって左右中央へ配置されます。

padding:24px;
横スクロールエリアの内側余白です。値を大きくするとテーブルと外側との間隔が広がり、小さくすると狭くなります。

min-width:1400px;
テーブル本体の最小横幅です。値を大きくするとテーブル全体がより横長になり、小さくすると横幅が狭くなります。横スクロールさせるために確保するテーブルの横幅を調整できます。

padding:12px;
見出しセルとデータセルの内側余白です。値を大きくすると文字と枠線の間隔が広がり、小さくすると詰まった表示になります。

border:1px solid #d1d5db;
見出しセルとデータセルの枠線です。1pxを大きくすると枠線が太くなり、小さくすると細くなります。

レスポンシブ対応
このサンプルは横スクロールを利用して、表示領域の狭い画面でもテーブルの内容を確認できる構成です。style.cssの.table-horizontal-scroll_wrapにはmax-width:800px;とoverflow-x:auto;を設定し、テーブル本体にはwidth:100%;とmin-width:1400px;を設定しています。テーブルが表示領域より横長になった場合は外枠の中で横スクロールできるため、スマートフォン・タブレット・PCでも10列の内容を横方向へ移動しながら確認できます。


こちらもおすすめ


コメント