今回は、HTMLとCSSで横スクロールできる表の作り方を解説します。
スマホ環境ですと表が入りきらないこともあるので、横スクールの仕方を覚えておくと良いでしょう。
横スクロールできる表の実装方法
横スクロールさせる方法は、主に二つあります。white-spaceプロパティを使う方法と、min-widthプロパティを使う方法です。
この2つの方法を、それぞれ紹介したいと思います。
実装のポイントは以下のようになります。
実装のポイント
- table要素の親要素に、
overflow-y: scroll
- table要素は、親要素をはみ出るようにする
white-spaceプロパティを使う方法
white-spaceにnowrap
を指定して、テキストの折り返しを禁止して横スクロールさせる方法です。
HTMLはこんな感じです。
<div class="table-wrap">
<table class="table">
<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>
<tr>
<th>サンプルテキスト</th>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
</tr>
</table>
</div>
CSSは以下のようにします。
.table-wrap {
overflow-x: scroll;
}
.table {
width: 100%;
border-collapse: collapse;
white-space: nowrap;
}
.table th,
.table td {
border: 2px solid #eee;
padding: 4px 8px;
}
ポイントとしては、table要素を囲む.table-wrap
にoverflow: scroll
を指定して、table要素にはwhite-space:nowrap
を指定している点です。
overflow: scroll
ははみ出た要素はスクロールして表示させるために指定します。
white-space: nowrap
はテキストの折り返しを禁止するために指定します。
テーブル内のテキストは自動では改行されないので、改行したい場合はbr要素で改行させてください。
min-widthを使う方法
min-widthプロパティでテーブルの最小サイズを指定して、コンテンツ幅がそれより小さくなる横スクロールするという方法です。
HTMLは先ほどと同じです。
<div class="table-wrap">
<table class="table">
<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>
<tr>
<th>サンプルテキスト</th>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
<td>これはサンプルテキストです。</td>
</tr>
</table>
</div>
CSSは以下のようになります。
.table-wrap {
overflow-x: scroll;
}
.table {
width: 100%;
min-width: 600px;
border-collapse: collapse;
}
.table th,
.table td {
border: 2px solid #eee;
padding: 4px 8px;
}
ポイントとしては、table要素を囲む.table-wrap
にoverflow: scroll
を指定して、table要素にはmin-width: 600px
を指定している点です。
コンテンツの幅が600pxより小さくなれば、横スクロールになるという指定方法です。
pxはデザインに合わせて変更してください。
まとめ
横スクロールが発生する仕組みさえ分かってしまえば、特に難しいことはありませんね。
この記事を参考に、横スクロールできる表を作ってみてください。
他にもこんな記事があります。
【CSSのみ】ページ内リンクでコンテンツを画面中央にする方法
今回は、ページ内リンクで遷移先のコンテンツを、画面中央に配置するテクニックを紹介します。JavaSc…
【CSS】clip-pathで背景を斜めに切り抜く方法
今回は、背景を斜めに切り抜く方法を紹介します。Webデザインでよくある表現として、背景を斜めにするデ…
CSSだけでサイドバーを固定(スクロール追従)する方法
今回は、CSSだけでサイドバーを固定する方法を紹介します。コンテンツをスクロールすると、サイドバーの…