[CSS21] Should anonymous table children of inlines be inline-table

Summary: should anonymous table children of inlines generate 
inline-table boxes instead of table boxes?


Consider the following markup/style:

     .test { display: table-cell }
       Test <span class="test">Test</span> Test

Per the current CSS2.1 specification the <span class="test"> should be 
wrapped in anonymous table-row, table-row-group, and table boxes.  The 
resulting rendering should then have each of the three words in the 
testcase on a separate line, since "display: table" boxes are block-level.

This is in fact what khtml 3.5 and Safari 2.0.4 implement.  Sadly, this 
is not what Gecko implemented back in the distant past; in Gecko this 
situation creates a box that acts more like "display: inline-table" than 
"display: table".  In particular, the three words end up on one line.

I've done some testing, and Opera 9 seems to behave like Gecko.  IE, of 
course, doesn't support "display: table-cell", so the span is just an 
inline in IE.

The problem is that sites actually use this to get a poor-man's 
"display: inline-block", as far as I can tell.  This works in Gecko, 
Opera, and IE (esp. since IE allows setting width on "display: inline" 
boxes); presumably the site operators are not exactly testing on Linux 
or Mac, so don't realize it doesn't work in Safari or khtml.  We've had 
Gecko bug reports filed pretty quickly when this behavior gets broken in 
trunk builds [1,2].  As a result, we would find it difficult to switch 
to the spec-compliant behavior, especially in quirks mode.  See 
discussion in the bug database starting at 

Quite apart from the practical considerations, it would generally make 
as much sense to make the anonymous table in this case an inline-table 
as it does to make it a table.  Possibly more sense.



[1] https://bugzilla.mozilla.org/show_bug.cgi?id=360065
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=297537

Received on Friday, 17 November 2006 22:15:30 UTC