Section 1 で行をグループ化する方法を見たが,列もグループ化できる。これは,表が何列からなるかを明示することにもなる。
行のグループ化とは異なり,列のグループ化は一括して行う。<TABLE> 内で,<CAPTION> の直後,<THEAD> の直前にあたる位置に書く。
列のグループ化には次の 2 つの要素を使う。
<COLGROUP>...</COLGROUP>
<COL>
<COLGROUP> は“ここから〜ここまで”,<COL> は“ここに”の形で書かれることに注意したい。</COLGROUP> は省略可能である。
これらはふつう,<COL> が <COLGROUP> に入った形で使われる。グループ化したい列の数の <COL> を中に書けばよい。
たとえば,1 列を 2 つのグループに分け,1 つめのグループが 2 つ,2 つめのグループが 3 つのセルからなるものと定義するならば,
<COLGROUP><COL><COL></COLGROUP>
<COLGROUP><COL><COL><COL></COLGROUP>
となる。ところが,セルの数が多くなるとこれは煩雑になる。そこで,属性を使ってうまくまとめることができる。
属性 | 値 | 解説 |
---|---|---|
WIDTH | 長さ | セルの幅を指定する。ピクセル,パーセント,相対指定。 |
SPAN | 数値 | 同じ指定のセルがいくつあるかを指定する。既定値は 1。 |
まず WIDTH 属性について触れておこう。これはその列幅を指定するわけだが,このとき“0*”(ゼロ アスタリスク)という特別な値を与えることができる。比例配分の形をしているが,意味するところは“セルに必要な最低幅”である。
SPAN 属性はどのように使うのか。連続した複数の列がまったく同じ設定であるときに,それらをまとめて記述することができる。たとえば連続した 5 つの列の幅を 10% ずつにしたいときは,
<COL WIDTH="10%"><COL WIDTH="10%"><COL WIDTH="10%"><COL WIDTH="10%"><COL WIDTH="10%">
と書くが,これを SPAN 属性を使ってまとめると,
<COL SPAN="5" WIDTH="10%">
でよい。最初にあげた例で,1 つめの列グループの幅を 2 つとも 10% とし,2 つめのグループは最初の 1 つを幅 20%,残りは既定値でよいとするならば,SPAN 属性を使って
<COLGROUP><COL SPAN="2" WIDTH="10%"></COLGROUP>
<COLGROUP><COL WIDTH="20%"><COL SPAN="2"></COLGROUP>
と書ける。
<COLGROUP> にも WIDTH 属性を指定することができるが,この値は,その <COLGROUP>...</COLGROUP> 内の <COL> にとくに WIDTH 属性が指定されていないときに使われる。列グループそのものの幅を表すのではない。たとえば,
<COLGROUP WIDTH="20%"><COL SPAN="3"><COL WIDTH="40%"></COLGROUP>
という列グループでは,はじめの 3 列に対しては <COLGROUP> に指定された幅 20% が使われ,4 列めは <COL> に明示された幅 40% が使われる。
また,1 つの列グループに含まれる列がすべて同じ設定の場合は,<COLGROUP> に対して SPAN 属性を指定することができる。このとき,<COLGROUP>...</COLGROUP> の間には何も書かない。
<COLGROUP SPAN="2" WIDTH="10%"></COLGROUP>
これは 2 つの幅 10% からなる列を含む,1 つの列グループを指定する。このとき SPAN 属性はグループに含まれる列の数を表し,列グループの数を表しているのではない。
さらに,とくに 1 つのセルをそのまま列グループにする場合,SPAN 属性も省略して
<COLGROUP></COLGROUP>
となる。
先ほど <COL> は <COLGROUP> の中で使うと説明したが,<COLGROUP> をひとつも使わないのであれば裸の状態で <COL> を書いてもかまわない。この場合列は明示的にグループ化されず,<COL> はただ列に対して属性を指定するだけになる。
<COLGROUP> また <COL> は行あたりのセルの数を宣言する意味も持っているので,実際の表の列あたりのセルの数の最大値と,<COLGROUP>,<COL> で宣言される 1 行あたりのセルの数は一致しなければならない。
また,HTML 4.01 では,COLSPAN 属性を用いて複数のセルをつなげるとき,そのセルは列グループをまたいではならない。
NN4 列のグループ化はサポートされない。