XHTML 1.0 TransitionalとFramesetはもとより、XHTML 1.0 StrictとXHTML 1.1でも、実は見栄えに関する要素・属性がいくつか残されている。これらは非推奨要素・属性と異なり、文書型定義で正式に認められているものの、見栄えに要素・属性であることに変わりはない(いわばグレーゾーンに属する要素・属性である)。前回の「使わないほうがよい要素」に引き続き、今回では「使わないほうがよい属性」の代替方法を見ていく。
1. (table要素)width、border、frame、rules、cellspacing、cellpadding属性
table要素のwidth属性は、CSSのwidthプロパティで代替する。border属性はborderプロパティで代替するが、あくまでtable要素の外枠のみのコントロールであるため、セルそれぞれの枠線については別途th要素とtd要素に対してborderプロパティを適用する。
table要素とセル、セル同士の重なり合う枠線の表示方法に関しては、border-collapseプロパティで「separate」(分離)または「collapse」(結合)を指定しておこう。なお、border-collapseプロパティの規定値は、CSS2では「collapse」だが、CSS2.1では「separate」に変更されている(「separate」を規定値として採用しているモダンブラウザが多いので、その現実に合わせた変更といえる)。
[修正前]
<table summary="参照元一覧。1列目がタイトル、2列目がURL。"
width="80%" border="1">
|
[修正後]
table {
width: 80%;
border: 1px solid gray;
border-collapse: collapse;
}
th, td {
border: 1px solid gray;
}
:
:
<table summary="参照元一覧。1列目がタイトル、2列目がURL。">
|
次に、frame属性とrules属性であるが、実務的にそれほど利用する機会はなく、あまり見慣れていないという人も多いだろう。frame属性は「table要素の外枠の表示形式」、rules属性は「行と列の線の引き方」の指定である。
frame属性に代えて、border-top、border-right、border-bottom、border-leftの各プロパティを利用することで、外枠の表示方向が指定できる。一方、rules属性は、thead、tfoot、tbody、colgroup、col、trの各要素にborder関連プロパティを指定することで代替できる。
[修正前]
<table summary="参照元一覧。1列目がタイトル、2列目がURL。"
frame="hsides" rules="groups">
|
[修正後]
table {
width: 80%;
border-top: 1px solid gray;
border-bottom: 1px solid gray;
border-collapse: collapse;
}
thead, tbody, tfoot {
border-top: 1px solid gray;
border-bottom: 1px solid gray;
}
:
:
<table summary="参照元一覧。1列目がタイトル、2列目がURL。">
|
最後に、cellspacing属性(セル間の間隔)はborder-spacingプロパティで、cellpadding属性(セル内の余白)はth要素とtd要素にpaddingプロパティを指定することで代替する。
なお、border-spacingプロパティは、border-collapseプロパティで「separate」が指定されているのが前提である。なぜなら「collapse」の場合、セル間の間隔はそもそも存在しないからである。
[修正前]
<table summary="参照元一覧。1列目がタイトル、2列目がURL。"
cellspacing="2" cellpadding="5">
|
[修正後]
table {
width: 80%;
border: 1px solid gray
border-collapse: separate;
border-spacing: 2px;
}
th, td {
border: 1px solid gray;
padding: 5px;
}
:
:
<table summary="参照元一覧。1列目がタイトル、2列目がURL。">
|
2. (td、td要素)align、valign属性
td要素とth要素のalign属性は、CSSのtext-alignプロパティで代替する。また、valign属性は、vertical-alignプロパティで代替する。
[修正前]
<th align="center" valign="top">テキスト</th>
|
[修正後]
th {
text-align: center;
vertical-align: top;
}
:
:
<th>テキスト</ht>
|
使わないほうがよい属性まとめ
最後に、今回説明した「使わないほうがよい属性」の代替方法をまとめておこう。
属性 |
代替方法 |
(table要素) |
width属性 |
widthプロパティ |
border属性 |
borderプロパティ (ただし、各セルの枠線についてはth要素とtd要素にborderプロパティを指定) |
frame属性 |
border-top、border-right、border-bottom、border-leftの各プロパティで枠線を表示させる方向を指定 |
rules属性 |
thead、tfoot、tbody、colgroup、col、trの各要素にborder関連プロパティを指定 |
cellspacing属性 |
border-spacingプロパティ |
cellpadding属性 |
th要素とtd要素にpaddingプロパティ |
(td要素) |
align属性 |
text-alignプロパティ |
valign属性 |
vertical-alignプロパティ |
(th要素) |
align属性 |
text-alignプロパティ |
valign属性 |
vertical-alignプロパティ |
|