Browsers return strange results when you try to apply background images to the thead
, tbody
and tfoot
table elements. Basically, this behavior varies from browser to browser but eventually I managed to get some consistent result by changing the default display role of these elements.
So I build up a test with the following HTML:
<table> <thead> <tr> <th scope="col">Header 1</th> <th scope="col">Header 2</th> </tr> </thead> <tfoot> <tr> <td>Footer cell</td> <td>Footer cell</td> </tr> </tfoot> <tbody> <tr> <td>Body cell</td> <td>Body cell</td> </tr> </tbody> </table>
The final CSS styles for this test are as follows:
table { width: 604px; table-layout: fixed; border-collapse: collapse; border-spacing: 0; font: 100% Arial, sans-serif; } thead { background: url(thead.gif) no-repeat; color: #fff; display: table-caption; width: 604px; } tbody { height: 66px; width: 604px; background: #e0e0e0; } tfoot { background: url(tfoot.gif) no-repeat; color: #fff; width: 604px !important; } th { width: 302px; height: 66px; vertical-align: middle; } td { width: 302px; text-align: center; vertical-align: middle; height: 66px; background-image: none; } tbody td {background: #e0e0e0;} tfoot tr { background: url(tfoot.gif) no-repeat; width: 604px; display: table; }
As you can see, I've changed the default display role of the thead
and tfoot
elements. You can see this test below.