2013/12/28(土)IE8のtable表示バグメモ
2013/12/28 26:41
IE8において、特定の条件下でtableタグのレンダリングに以下の問題が発生する。
問題の内容は、
・表の外枠の上罫線が欠ける
・表の外枠の左罫線が欠ける
先にコードを提示する。
IE8で以下のようなコードをレンダリングすると発生する。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>test</title> <style type="text/css"> table{ border-collapse: collapse; } td,th{ border: solid 1px black; } div{ overflow: hidden; } </style> </head> <body> <div> <table> <thead> </thead> <tbody> <tr> <td>a</td> <td>b</td> <td>c</td> </tr> </tbody> </table> </div> </body> </html>条件は以下の通り。
・ブラウザ: IE8
・モード: 標準モード
・tableの親divで"overflow: visible"以外を指定
・border: collapse
・空のtheadタグがある
必要十分かどうかは不明。
主たる原因は、空のtheadタグがあるから。
これを消すと罫線が表示される。
バグという表現を使ったが空theadは元々validate通らないので、IE8が必ずしも悪いわけではない。ただし他のブラウザで線が欠けるものは発見できなかった。
空theadを使うなと言えばその通りだが、IE対応かつ表の固定ヘッダ(Excelのような)を作ろうとするとsampleなどにもちょいちょい出て来るコードなので多少留意をしておくこと。