時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【CSS】tableタグを横スクロールする方法【スマホ】

記事内に広告を含みます

パソ君
パソ君

・テーブルを横スクロールする実装ってどうやるの?

こんな疑問にお答えします。

テーブルのカラム数が多かったり、スマホで見たりすると下記みたいに見栄えが悪くなりますよね↓

横の大きさが小さくなり、テキストの収まりが悪くなります。こうなるとユーザー側からしても見にくいです。

これの対策が、横スクロールできるようにすること!

意外と簡単にできますよ!

ジト
ジト

すぐにできる!

ということで、この記事では「tableタグをスマホ時に横スクロールする」について解説していきます!

この記事でわかること

・tableタグを横スクロールする方法
・tableタグを横スクロールする方法【改行せず】
・tableタグを横スクロールする方法【スマホの時】

【CSS】tableタグを横スクロールする方法

tableタグを横スクロールさせる方法は、簡単です。

まずはサンプルを見てみてください↓

See the Pen ➀table横スクロール by jito-coder (@jito-coder) on CodePen.

<div class="table-scroll">
    <table class="table-scroll__container">
        <tr>
            <th>見出しタイトル</th>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
        </tr>
        <tr>
            <th>見出しタイトル</th>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
        </tr>
        <tr>
            <th>見出しタイトル</th>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
            <td>ここにテキストが入ります。ここにテキストが入ります。</td>
        </tr>
    </table>
</div>
.table-scroll {
    overflow-x: auto;
    max-width: 100%;
    width: 500px;
    margin-top: 30px;
    margin-right: auto;
    margin-left: auto;
}
.table-scroll__container {
    width: 1000px;
}
th {
    width: 250px;
    padding: 25px;
    color: #000066;
    border: 1px solid #000066;
}
td {
    width: 200px;
    padding: 25px;
    border: 1px solid #000066;
}

解説するうえで、重要となるコードがこちら

  1. tableタグを囲む親要素を作成
  2. tableタグを囲む親要素にoverflow-x: auto;
  3. tableタグを囲む親要素の横幅を小さく

順に見ていきましょう。

コード解説➀:tableタグを囲む親要素を作成

まず重要なのがtableタグを囲む親要素を作ること。横スクロールの実装をするためには、この親要素が必須となってきます。

今回でいう「table-scroll」というdivタグですね↓

<div class="table-scroll">
    <table class="table-scroll__container">
       ~~~~~
       ~~~~~
       ~~~~~
    </table>
</div>

コード解説➁:tableタグを囲む親要素にoverflow-x: auto;

次に重要なのが、先ほど作成した親要素に対して「overflow-x: auto;」を指定すること。

これが横スクロールを発生させるための、指定となります。

今回でいうと、下記のコードですね↓

.table-scroll {
    overflow-x: auto;
  ~~~
}

「overflow-x: auto;」と指定すると、要素の幅をはみ出した場合、ブラウザによって処理を委ねる実装ができます。だいたいのブラウザはscrollを指定した場合と同じ挙動です。

ジト
ジト

x軸にはみでたらスクロールさせると考えればOK

コード解説③:tableタグを囲む親要素の横幅を小さく

最後にtableタグの横幅よりも、親要素の横幅を小さくします。

今回でいうと下記の指定↓

.table-scroll {
    ~~~~~
    width: 500px;
    ~~~~~
}
.table-scroll__container {
    width: 1000px;
}

親要素が500px。そしてtableタグが1,000pxとしています。

つまり表示されるのは親要素の500px部分。

残り500px部分に関しては、親要素の横幅をはみ出しているので、下記のようにスクロールできるようになります。

【CSS】tableタグをスマホ時に横スクロールする【文字を改行させない場合】

ちなみにですが、tableタグの中の文字を改行させないやり方もあります。

やり方は簡単で、tableタグの親要素に対して「white-space: nowrap;」を指定するだけ。

サンプルを見たほうがわかりやすいかと↓

See the Pen ➀table横スクロール by jito-coder (@jito-coder) on CodePen.

中身のコードは先述とほぼ同じ。「white-space: nowrap;」のみ追加しております。

<div class="table-scroll table-scroll--nowrap">
    <table class="table-scroll__container">
        ~~~
        ~~~
    </table>
</div>
.table-scroll--nowrap {
    white-space: nowrap;
}

【CSS】tableタグを横スクロールする方法【スマホのとき】

最後に横幅が小さくなったら、tableタグを横スクロールできるようになる実装方法を紹介します。

下記みたいな感じで、テキスト部分が折り返される位置になったらスクロールできるようになる作りですね

やり方は簡単。

tableタグに対して「width: 100%;」、「white-space: nowrap;」を指定するだけ。

table {
    width: 100%;
    white-space: nowrap;
}

これでスマホ時だけのように、良い感じに横スクロールを発生させることができます!

【CSS】tableタグを横スクロールする方法【スマホ】:まとめ

  • tableタグを囲む親要素に
    ▷「overflow-x: auto;」を指定
    ▷横幅をtableタグより小さく
  • 改行させない場合「white-space: nowrap;」を指定
  • スマホの時対応したいならtableタグに対して「width: 100%;」、「white-space: nowrap;」を指定
ジト
ジト

tableタグを横スクロールさせる実装はよく使うので、覚えておこう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA