Yes, CSS2.1 states the following for tables with the separated borders model:
However, in HTML and XHTML1, the width of the <table> element is the distance from the left border edge to the right border edge.
Note: In CSS3 this peculiar requirement will be defined in terms of UA style sheet rules and the 'box-sizing' property.
The current CSS3 definition of box-sizing
does not say anything about this, but translating the above quote it basically means in (X)HTML, tables use the border-box model: padding and borders do not add to the specified width of a table.
Note that in terms of the box-sizing
property, different browsers seem to handle this special case differently:
Chrome
box-sizing
is set to the initial value, content-box
; changing it has no effect whatsoever. Neither does redeclaring box-sizing: content-box
within the inline styles, but that should be expected. Either way, Chrome appears to be forcing the table to always use the border-box model.
IE
box-sizing
is set to border-box
; changing it to content-box
causes it to behave like the second div
.
Firefox
-moz-box-sizing
is set to border-box
; changing it to content-box
or padding-box
causes it to resize accordingly.
Since CSS3 does not yet make any mention of table box sizing, this should not come as a surprise. At the very least, the result is the same — it's only the underlying implementation that's different. But given what the note says above, I would say that IE and Firefox are closer to the intended CSS3 definition, since in Chrome you can't seem to change a table's box model using the box-sizing
property.
Tables with the collapsing border model don't have padding at all, although in this case it's not relevant since your table does not use this model:
Note that in this model, the width of the table includes half the table border. Also, in this model, a table does not have padding (but does have margins).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…