P でテーブルをセンタリング

弁当箱のように……

かつて某NHK で放送していた「趣味悠々 ホームページ」という番組の最終回。

「場合によって見栄えが違うのは何故?」という質問に対して、出演者の久住さんが「私のページも見栄えがだいぶ違うんですよ〜」と言い出しました。場合によって、画面の下方にあるメニューが「弁当箱のように」左に寄っているのだというのです。そして実際、スタジオのパソコンで見ると中央に揃えられているのに、久住さんのノートパソコンでは左に寄って見えていました。

そこで私の感想。

ああ、こりゃスタイルシートに対応してないブラウザだな。

しかし、この感想は間違っていたのです。

実はバグ……

たまたま別の件でテーブルのセンタリングについて話していたとき、HTML4.0仕様書邦訳補完委員会メーリングリストアクティブメンバーの もは さんが、この久住さんのサイトのことを話して下さいました。恐ろしいことに、この「弁当箱のように」左に寄ったテーブルは、P でセンタリングされているというのです。

で、私も久住さんのサイトへ出向いて確認しました。

<P ALIGN=CENTER>
<TABLE width="532" height="41" BORDER="1" CELLSPACING="2">

がーん。ホントだ。(笑)

一応解説しておきますが、少なくとも私の知る限り、P で テーブルをセンタリングできる HTML仕様は存在しません。HTML3.2 にせよ HTML4.0 にせよ、P の中身には TABLE なんて入れられませんから、件の構文にはこのように……

<P ALIGN=CENTER>
</P>
<TABLE width="532" height="41" BORDER="1" CELLSPACING="2">

<TABLE> の直前に </P> が補われなければなりません。センタリングのついた P 要素はテーブルの前で終了しますから、テーブルはセンタリングされないはずなのです(P の代わりに DIV を使えばセンタリングできます)。にもかかわらず、これでテーブルがセンタリングされてしまうのだとしたら、それは正しい位置に </P> を補うことが出来ない、ブラウザのバグです。

お分かりだと思いますが、これは、「ブラウザによって見た目が違う」例としては不適当なんですね。……って、そういう話じゃなくて。

じつは、これをセンタリングしてしまうのは Microsoft Internet Explorer です。4.01sp1 でもしっかりセンタリングしてくれます。迂闊に </P> を省略すると、どこに補われるのか想像もつきません。省略しないように心がけましょう(もっとも、バグつきブラウザなんかに構う必要なんかない、という意見もあるでしょうが)。

あ、

……言い忘れるところでしたが、前述のソース、あれは久住さんが悪いのではありません。犯人は、このソースを生成した某オーサリングツールです。

市販のオーサリングツールにはホントに酷いモノが多くて、TABLE も HR も何でもかんでも P で括ったりします。「インデント」を実行すると <BLOCKQUOTE> が挿入されたりします。これは酷い。

ひょっとして、こういうツールを作っている会社は、仕様書WAIのアクセシビリティガイドラインも読んでないんでしょうか。ホント、何考えてるんでしょう。


HTMLむだ話

HTML鳩丸倶楽部

水無月ばけら, MINAZUKI Bakera
E-mail: bakera@star.email.ne.jp