HTML tableで表作成する方法【レイアウトの方法まで完全網羅】 | WEBCAMP NAVI
【5月枠も残りわずか】転職保証コース

HTML tableで表作成する方法【レイアウトの方法まで完全網羅】

HTMLで表を作りたいときに使うのは「tableタグ」です。
ですが、それを知っていてもなかなか使いこなすことができない!という方もいらっしゃるのではないでしょうか?

「tableタグ」を用いて表を作るためには、4つの要素を理解する必要があります。
基本の構造を理解した上でまずは、一番シンプルな表を作ってみましょう。

この記事を読んで、曖昧になりがちなHTMLのtableタグの使い方を一緒にバッチリにしましょう!

表(テーブル)を作ることができるtableタグ

tableタグ(table要素)を使えば、表(テーブル)を作成することができます。
実際にこのような表をみたことがあるのではないでしょうか?

このような表は、tableタグを使って作られています。
では、このtableタグの構造と、中に含まれる3つの要素について説明していきたいと思います。

表の構成

tableタグを使って作られる表(テーブル)は、<table> <tr> <td> <th>の4つの要素で構成されています。

HTML table

タグの種類
・<table></table>:全体をこのtableタグで囲みます。囲まれている部分が表になります。
・<tr>:table rowの略で、表に行を1行作ります。
・<th>:table headerの略で、表の見出しとなるセルを作ります。
・<td>:table dateの略で、表の中身となるセルを作ります。

少し名前が紛らわしいですが、1つ1つが何を表しているのかを覚えてしまえばあとは見た目を整えていくだけです。
では、基本のコードを見ていきましょう。

長いコードに関しては、縮小しているのでクリックして確認してみてください。

tableタグを使った基本のコードの書き方

早速、この表を作っていきたいと思います!

まず、対応しているHTMLとCSSのコードを確認したい方はこちらをみてみてください。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
            <tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>
example.css

 

table {
  border-collapse: collapse;
}
table th, table td {
  border: solid 1px black;
}

最初にHTMLについて説明してから、CSSの解説をしていきたいと思います。

STEP.1
全体を<table>タグで囲う

まずはじめに、表にしたいと考えているところを<table></table>で囲みます。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
            <tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

この時、tableタグの横にborderがありますが、これは枠線の太さを指定するものです。
これを書かなければ、下のように枠線のない表になってしまいます。

しかし、枠線に関する指定はHTMLで行うよりもCSSで行う方が最適なので、それについてはこの後説明していきたいと思います。

STEP.2
作りたい行の分だけ<tr></tr>を作る

作りたいと思う行の数だけ、<tr></tr>を作ります。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
            <tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

STEP.3
見出しを<thead></thead>と<th></th>、それ以外を<tbody></tbody>と<td></td>で囲う
 

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="1">
        <thead>
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
            <tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

これが基本のコードになります。ここまでで完成する表がこちらです。

しかし、最初にお見せした表と線が異なっていると思います。
これを調整するためのCSSの指定がこちらです。

example.css
table {
  border-collapse: collapse;
}
table th, table td {
  border: solid 1px black;
}

thとtdに対して枠線の指定をすることで、1つ1つのセルに枠線をつけているイメージです。

この罫線のスタイルは以下のようにまとめて指定することができます。

html table 罫線の指定

今回の場合は、「solid→一本線、1px→太さが1px、black→黒い線」という指定になります。

これだけだと隙間ができてしまうので、border-collapse: collapse;を使って指定をします。
これは、隣り合うセルの罫線を間を空けずに表示するものです。

このときに先ほど話したtableタグのborder属性は0に指定しておきます。
CSSで罫線に対して指定ができているため、HTML側で線について指定する必要がないからです。

ここまでコードを書くと、最初の表が完成します。

作りたい表を作るデザインの方法

HTMLで作った表の見た目を変えていくためには、CSSを使います。
先ほど罫線を引いた時のようにCSSに書き加えることによって、装飾の変更をすることができます。

CSSの役割
CSSにはHTMLにデザインをつける役割があります。
HTMLと同じファイルにコードを書くことも可能ですが、別々のファイルに書く方法が一般的です。

HTMLと別のファイルに書いたCSSをHTMLに読み込むためには、HTML内で下記のコードを指定する必要があります。

HTML
<link rel="stylesheet"  href="名前.css">

詳しく知りたい方はこちらの記事を読んでみてください。

HTMLファイルへのCSS読み込み方法を徹底解説【コピペで使える】

ここからは主にCSSを変えていくので、HTMLと混ざってしまわないように注意してください!

見出しを変えたい時

・【見出し無しにする】<thead></thead>・<th>タグを抜く
見出しをなくしたい時は<thead></thead>タグと<th>タグを抜くだけで、見出しのない表にすることができます。
ただ情報を並べたいだけの時は、<table><tbody><td><th>だけを使います。

左のコードで色が付いている部分の<thead>を抜いて、<th></th>を<td></td>に変えます。

変更前のコード

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <thead>
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

変更後のコード

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
            <tr>
                <td>メニュー</td>
                <td>値段</td>
            </tr>
        <tbody>
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

 

そうすると下の画像のように、見出しをなくすことができます。

・【見出しを縦に並べる】<th><td>を1つの<tr>の中に
基本の通りコードを書くと、見出しは横に並んでいきます。

HTML
<tr>
    <th>見出し</th>
    <th>見出し</th>
    <th>見出し</th>
</tr>

このように<tr>タグの中に見出しだけが並んでいたものを、

HTML
<tr>
    <th>見出し</th>
    <td>データ</td>
    <td>データ</td>
</tr>

このように<tr>タグの中に横に並べたい見出しとデータを一緒に入れることによって、見出しを縦に並べることができます。
先程までのデータを書き換えたものがこちらです。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <tr>
            <th>メニュー</th>
            <td>オムライス</td>
            <td>ハンバーグ</td>
            <td>ナポリタン</td>
        </tr>
        <tr>
            <th>値段</th>
            <td>700円</td>
            <td>900円</td>
            <td>600円</td>
        </tr>
    </table>
</body>
</html>

実際にこのように横並びの表にすることができました。

罫線を変えたい時

罫線のスタイルはborder属性を使ってまとめて線の種類・太さ・色を指定することができます。

方法は先ほども触れた通り、以下のようになります。

html table 罫線の指定

線の種類・太さ・色の順番は、どのような順番になっても大丈夫です。
罫線は先ほども出てきましたが、それぞれのセルの周りに引かれているイメージです。
そのため、tableタグに対して指定するのではなく、thタグ・tdタグに指定を行ってください。

example.css
table th, table td{
  border:solid 1px black;
}

ここでは border : 線の種類 太さ 色の順番で指定がされています。
よく使われる線の種類としては、solid(実線)・dotted(点線)・dashed(破線)・double(二重線)none(なし)があります。用途に合わせて使い分けてください。

表のデザインを変えたい時

・【背景の色を変える】background-color属性


表の背景色を変えたい時は、色を変えたい行や列に対してbackground-color属性で指定します。

example.css
table th, table td{
  background-color: #174a5c;
}

・【余白を調節する】padding属性


余白を調節したい時は、padding属性で指定していきます。

example.css
table th, table td{
  padding : 20px 10px;
}

paddingについて知りたい方はこの記事を読んでみてください。

余白を作る CSS「paddingとmargin」の使い分け方【徹底解説】


・【幅を変える】width属性

幅を変える時は、width属性で指定していきます。

example.css
table {
  width : 300px ;
}

この時、いつもと同じように px と %どちらで指定しても構いません。
ただし、スマホ対応のこと考えると%で指定する方が良いかもしれません。

・【高さを変える】height属性
高さを変える時は、height属性で指定していきます。

example.css
table{
  height : 100px ;
}

このときに使うことができるのはpxのみです。

・結合させる(横)ーcolspan属性


横向きに結合させたい時は、colspan属性で指定していきます。
注意して欲しいのは、結合させる時はcssではなく、htmlで指定していくということです。

わかりやすくするために、cssで文字を中央寄せにしておきます。
繋げたいセルのはじまりの<th>(または<td>)にcolspan = “繋げたい数”を書き足します。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <tr>
            <th>メニュー</th>
            <td>オムライス</td>
            <td>ハンバーグ</td>
            <td>ナポリタン</td>
        </tr>
        <tr>
            <th>値段</th>
            <td>700円</td>
            <td colspan="2">900円</td>
        </tr>
    </table>
</body>
</html>

 

・【結合させる(縦)】rowspan属性


縦向きに結合させたい時は、rowspan属性で指定していきます。
ここでも、CSSではなくHTMLで指定していきます。
繋げたいセルの中で一番上にあるものの<th>(または<td>)にrowspan=”繋げたい数”を書き足します。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <tr>
            <th>メニュー</th>
            <th>値段</th>
        </tr>
        <tr>
            <td>オムライス</td>
            <td>700円</td>
        </tr>
            <td >ハンバーグ</td>
            <td rowspan="2">900円</td>
        </tr>
        <tr>
            <td>ナポリタン</td>
        </tr>
    </table>
</body>
</html>

プラスαで知っておくと便利なこと

スマホの画面に対応させる

スマホに対応するやり方を解説します。

・横幅を100%にする
th・td共に横幅を100%に指定することによって、スマホの画面に収めていきます。

example.css
table {
  border-collapse: collapse;
  text-align: center;
}
table th, table td {
  border: solid 1px black;
  padding : 20px 10px;
  width: 100%;
  display: block;
}

縦に並べることでスクロールで見ることができるようになります

データ部分だけスクロールできるようにする

設定するにはテーブルヘッダ要素とテーブルボディ要素を定義し、各列にclassを振り分けて幅を設定する必要があります。
テーブルヘッダをdisplayプロパティで固定し、テーブルボディは縦軸スクロールで高さを固定します。

STEP.1
HTMLで、見出しの部分をテーブルヘッダ要素・データの部分をテーブルボディ要素として定義します。
 

HTML
<!DOCTYPE html>
<html>
<head>
    <title>メニューと値段</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <thead class="table_head">
            <tr>
                <th>メニュー</th>
                <th>値段</th>
            </tr>
        </thead>
        <tbody class ="table_body">
            <tr>
                <td>オムライス</td>
                <td>700円</td>
            </tr>
                <td>ハンバーグ</td>
                <td>900円</td>
            </tr>
            <tr>
                <td>ナポリタン</td>
                <td>600円</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

STEP.2
次にCSSのコードを書いていきます。
 

example.css
table {
  border-collapse: collapse;
  text-align: center;
}
table th, table td {
  border: solid 1px black;
  padding : 20px 10px;
  text-align: left;
  width: 120px;
}
thead.table_head,tbody.table_body{
  display: block;
}
tbody.table_body {
  overflow-y: scroll;
  height: 150px; 
}
追加した部分
display: block; で高さや幅を決められるようにします。
overflow-y: scroll; がスクロールを可能にする属性です。
height: 150px; の数字を変えると表のスクロール部分の高さを変更することができます。

表のデザイン例まとめ

元となる表のHTMLのコードはこちらです。
このHTMLをベースに、CSSで装飾を足していきます。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>表の見本</title>
    <link rel="stylesheet" href="example.css">
</head>
<body>
    <table border="0">
        <thead>
            <tr>
                <th>見出し</th>
                <th>見出し</th>
                <th>見出し</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>データ</td>
                <td>データ</td>
                <td>データ</td>
            </tr>
            <tr>
                <td>データ</td>
                <td>データ</td>
                <td>データ</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

シンプルな表

シンプルで使いやすい表のコードを紹介します。

example.css
table {
  border-collapse: collapse;
  width: 400px;
  font-size: 12px;
  margin: 20px;
  text-align: left;
}
table th {
  color: black;
  padding: 10px;
  border-bottom: 3px solid #174a5c;
}
table td {
  padding: 10px;
  color: gray;
  border-bottom: 1px solid gray;
}

この表では、表自体の罫線は引かずにborder-bottom属性でアンダーラインを引きました。
「border-bottom :線の太さ 線の種類 線の色 」で指定できるので自分好みの色や太さに変更してみてください

ビジネス向けの表

企業のHPで使えるような、少し堅めの表のコードを紹介します。

example.css
table {
  border-collapse: collapse;
  width: 400px;
  font-size: 12px;
  margin: 20px;
  text-align: center;
}
table th {
  color: black;
  background-color: lightgray;
  padding: 10px;
}
table td {
  color: black;
  background-color: #F5F5F5;
  padding: 10px;
  border-bottom: 1px dotted lightgray;
}

先ほど使ったborder-bottom属性をここでも使っています。

前述の通り線の種類はsolid(実線)・dotted(点線)・dashed(破線)・double(二重線)none(なし)などがあるので使いたいものに合わせて使ってみてください。

色はもちろん覚える必要がなく、「CSS 色」などで検索してみるとたくさん出てくるので使ってみてください。

ポップな表

罫線を引かないことで、親しみやすい表に感じられます。
ここでは行ごとに色を変える方法をお伝えします。

example.css
table {
  text-align: center;
  width: 100%;
}
table th, table td {
  padding : 20px 10px;
}
table tr *:nth-child(1){
  background:#cc0066;
}
table tr *:nth-child(2){
  background:#ff3399;
}
table tr *:nth-child(3){
  background:#ffcccc;
}

table tr *:nth-child()とすることによって()の中にある数字の列について一気に指定することができます。

表を作るtableタグまとめ

いかがでしたでしょうか?

まず基本として、tableタグを構成する4つの要素は覚えていますか?
そして、見た目を整えたいときはCSSでコードを書くことも覚えておいてください。

これさえ分かっていれば、作りたい表のイメージに合わせてCSSを書いていくだけです。
たくさん調べて、何度も繰り返し書くことで実際に使えるスキルになります。

わからなくなったら、いつでもこの記事に戻ってきてください。

5月枠も残りわずか!!未経験からエンジニアを目指すならDMM WEBCAMP

DMM WEBCAMPは転職保証型のプログラミングスクールです。転職成功率は、98%!短期間で確実にスキルを身につけて、ひとりひとりに寄り添った転職サポートで、未経験からのエンジニア転職を叶えます!

「未経験だから不安…」、「転職できるんだろうか…」などの不安があると思います。そんな不安や心配を解消する、無料のカウンセリングを実施しています。

無理な勧誘や面倒な電話は一切ありませんので、お気軽にお越しください。

【無料】キャリア相談の日程を見る