視覚系ブラウザーはブラウザースタイルシートで表の罫線を表示させるべき
著
少し前に勤務先で話題になったのが、Bug 22541 - <table border=1> isn't considered invalid。コメントにあるように、Validator.nuではtable要素のborder属性値が空か1であっても警告を出すようになったそうで。具体的には
- <table border>
- <table border="">
- <table border="1">
とマークアップしたとき、従来であれば問題視されなかったのが、警告されるようになったと(ちなみにborder="0"とかborder="2"といった指定は従来と変わらず警告ではなくエラーという扱い)。その結論自体に異論はないし、仕事であろうとなかろうと、個人的にはborder属性を書かないようになって久しい。ただ、border属性を書かなかったとき、視覚系ブラウザーにおける制作者スタイルシート無効時の表示というのは昔から気になっていて、表を表と認識しにくい。極めて稀かもしれないけれど、ブラウザーのデフォルトスタイルシートだけでは罫線が引かれないことを理由に、「必要悪として」border属性を記述するケースもあったのではないか。ゆえに標題の通り、視覚系ブラウザーはブラウザースタイルシートで表の罫線を表示させるべきだと思っています......がこの話、既に3年近く前に結論は出ていたのですね:
- Working Group Decision on ISSUE-155 table-border from Maciej Stachowiak on 2011-04-14 (public-html@w3.org from April 2011)
- ISSUE-155-CP1 - HTML WG Wiki
HTML 5.1 Nightlyの4.9 Tabular dataをみると
Tables can be complicated to understand and navigate. To help users with this, user agents should clearly delineate cells in a table from each other, unless the user agent has classified the table as a layout table.
という記述があります。じゃあtable要素がレイアウト目的か否かはどう判別するのって話になるのですけど、難しいですね。cellspacing="0"とcellpadding="0"が同時に指定されているケースであれば確度が高いと思うけれど(そういうHTMLを書いていた時期が自分にもありました)、role="presentation"とかborder="0"は......レイアウト目的ではない、というのを明示するためだけにborder属性を指定してるケースってあるのでしょうか。そもそもテーブルレイアウト自体が時代遅れとなったこのご時世、デフォルトで罫線が引かれるようになったところで表示がおかしくなる割合というのは相対的に減っていると思うのですけど、楽観的すぎますかね?特にオチはありません。