HTML 【 表 】1 ~ 基本的なtableの作り方

Calender Planner Organization Management Remind Concept

イベントのお知らせやスケジュールなど、大事な情報を伝える時には、文章だけで伝えるより、表を使った方が分かりやすい場合があります。
Webサイトで表を作りたい時は、table要素というものを使って作成していきます。
今回は、Webサイトで表示させる基本的な表の作り方を紹介します。

目次

1.table要素の基本構造
2.基本的なtableを作ってみよう
3.CSSで見た目を整えよう
4.th要素を縦に並べてみよう
5.セルの幅を指定しよう
6.タイトルを付けよう

1.table要素の基本構造

tableは下のような基本構造で出来ています。

table要素の中に、まず、横一列を表すtr要素が入ります。
colmun_image1478_01

tr要素の中に、th( 見出し用のセル )、td( データ用のセル )が入ります。
colmun_image1478_02

tableは、必ず全体が <table> </table> で囲まれ、 横一列( 1行 )は、<tr> </tr> で囲まれる構造となっています。
そして、<tr> ~ </tr> の中に、各セルが入ります。
見出し用のセルはth要素(<th> ~ </th>)、データ用のセルはtd要素(<td> ~ </td>)で示します。

「 tr 」は「 table row 」の略です。「 row 」は横列( 行 )の意味です。
反対語の縦列を表すのは、「 column 」で、略して「 col 」と書きます。
この「 row(横列)」と「 col(縦列)」は、tableでよく出てきます。

そして、「 th 」は「 table header 」の略です。ヘッダ、見出しです。
「 td 」は「 table data 」の略です。データのことです。

▲目次へ戻る

2.基本的なtableを作ってみよう

さきほど出てきたtr、th、tdを使って、table要素は次のような書き方をします。
colmun_image1478_03
全体は <table> ~ </table> で、1行ずつは <tr> ~ </tr> で囲まれてます。
<tr> ~ </tr> の中に、見出しは <th> ~ </th> 内に、データは <td> ~ </td> 内に入っています。

table要素の1行目で、<table> に class名「 sample1 」を指定してます。
これは、後ほど、CSSでこのtableの見た目を整えていくための準備です。
( Webページで使うtableが全て同じ構造の場合は、class名やid名をつけなくてもOKです。 )

上のファイルを保存して、ブラウザで見てみると、下のように表示されます。
colmun_image1478_04
セルの枠線や色分けなどがなくて、表には見えないかもしれません。
でも、要素の構造上の使い方は正しいので、HTML文書的にはこれがtableです。

▲目次へ戻る

3.CSSで見た目を整えよう

HTML文書的にOKといっても、見た目が重要なWebサイトで、さきほどのようなテーブルの表示はありえません。
そこで、CSSで見た目を調整していきます。
下のような見た目を目指してみましょう。
colmun_image1478_05

まず、CSSファイルに、次のような指定を書き込みます。
colmun_image1478_06
赤線で囲まれた部分を見て下さい。
table要素の、上と左にborderの指定を、
th要素やtd要素の、下と右にborderの指定をしています。
このように table要素に上と左、セル要素(th、td)に下と右というようなborderの指定をするのは、table要素と各セル全てに上下左右ともborder指定をすると、下のように、重複して二重線になってしまうからです。
colmun_image1478_07

次に、青の下線「 padding: 7px; 」を見て下さい。
各セルに7pxの余白( padding )を入れるという指定です。
罫線( border )とテキストがくっついてると読みにくいので余白の指定をします。

また、青の下線「 border-spacing:0; 」も見てください。
「 border-spacing 」とは、セルとセルの間隔、セル間の距離のことです。
さきほどのborder指定をした場合、この「 border-spacing:0 」を指定しないと、各border( 枠線 )がぴったりくっつかず、隙間が空いた状態で表示されます。

ちなみに、「 border 」「 padding 」「 border-spacing 」の指定は、HTML4までの table要素では、属性の指定として成り立っていました。( <table border=”1px” cellpadding=”7px” cellspacing=”0″>と使っていました。)
これらの属性は、HTML5では奨励されず、上のようにCSSで指定するようになりました。

CSSファイルが整いましたので、htmlファイルの <head> ~ </head> 間にCSS読み込みの
<link href=”css/common.css” rel=”stylesheet” type=”text/css” media=”all”>
を書き込んで、ブラウザで表示を確認してみましょう。
colmun_image1478_08
無事に枠線と見出し部分の色付けが表示されて、表らしくなりました。

▲目次へ戻る

4.th要素を縦に並べてみよう

さきほどは、th要素を横に並べましたが、縦に並べることも出来ます。
表組によっては、この方が表現しやすい場合もあると思います。

th要素を縦に並べる場合は、次のような書き方になります。
th要素を、各tr要素の先頭にもってきただけです。
CSSは、さきほどのものと同じです。
colmun_image1478_09

ブラウザで表示を確認してみましょう。
colmun_image1478_10
見出しが縦に並んで表示されました。

▲目次へ戻る

5.セルの幅を指定しよう

さきほどth要素を縦に並べて表を作った時、表が少し不格好に見えたかと思います。
これは、セルの内容によってセル幅が決まるため、データよりも見出しの幅が広くなったためです。
このような場合は、セル幅のサイズを指定すると見た目が良くなります。

セルの幅を指定するには、<td>タグに「 width=”” 」という属性を追加します。
「 width=”” 」に入力できる値は、ピクセル( px )かパーセント( % )です。
ピクセルは絶対的な指定方法で、パーセントは相対的な指定方法です。
パーセントによる実際の長さは、テーブル全体の幅に対する長さになります。

ピクセルで指定する場合は、セルの長さが優先されますので、テーブル全体の幅を指定する必要はありませんが、パーセントで指定する場合は、基準となる長さが必要なため、テーブル全体の幅を指定する必要があります。

また、ピクセルによる指定とパーセントによる指定どちらの場合でも、さきほどの表のように、複数列を持つ表の場合、各セルの幅の合計は、表全体の幅に一致していなければなりません。
なので、パーセントの場合は合計が100%となるように注意する必要があります。

そして、複数の行や列がある表の場合、セルの幅を指定するのは最上段の行だけでOKです。他の行は上段で指定された幅となりますので、全てのセルで幅を指定する必要はありません。

さきほどth要素を縦に並べたtableのセル幅を指定してみましょう。
colmun_image1478_11
テーブル全体の幅をピクセルで指定して、セル幅をそれぞれパーセントで指定しました。
ピクセルの単位( px )は省略できます。
ブラウザで表示を確認してみましょう。
colmun_image1478_12
幅を指定すると、その幅に合わせて、セル内のテキストが改行されて表示されます。

▲目次へ戻る

6.タイトルを付けよう

table にタイトルを付けてみましょう。
タイトルを付ける時は、caption要素というものを使って、次のように書きます。
colmun_image1478_13
caption要素は、必ず <table > 開始タグの直後に入れます。
最初の <tr> タグの直前です。
ブラウザで表示を確認してみましょう。
colmun_image1478_14
tableの上にタイトル( caption要素 )が表示されます。

タイトルは、tableの下に表示させることも出来ます。
HTML5では、タイトルをtableの下に表示させる設定を、CSSの「 caption-side 」プロパティで行います。

ちなみに、HTML4までは、caption要素のalign属性というもので、指定していました。
( HTML4, XHTML1では <caption align=”bottom”> と書けばtableの下に表示されました。 )
HTML5からはalign属性が使えなくなったので、CSSのcaption-sideプロパティで指定します。

CSSファイルに、下のようにcaption-sideプロパティを指定します。
colmun_image1478_15
HTMLファイイルはさきほどと同じです。
タイトルの表示位置に関係なく、caption要素は <table> 開始タグの直後、最初の <tr> タグの直前に書きます。
CSSファイルのcaption要素に「 caption-side: bottom; 」と入れるだけです。
ブラウザで表示を確認してみましょう。
colmun_image1478_16
tableの下にタイトルが表示されました。

▲目次へ戻る

これで、基本的なtableはいつでも作れます。
次に、セルを結合させるための書き方や、セルの枠線の非表示設定などについてまとめましたので、HTML 【 表 】2 ~セルの結合と枠線の非表示も是非ご覧下さい。