CSS height属性是否应作用于表格行组?浏览器实现差异求证
tbody元素height属性的浏览器差异与标准合规性
这个问题确实挺容易踩坑的,我来帮你理清楚标准定义和浏览器的实现逻辑:
标准文档的模糊点
CSS 2.1的两份相关规范在这里存在描述上的矛盾:
《视觉格式化模型细节》指出height适用于除非替换行内元素、表格列及列组之外的所有元素,无额外限制;
W3C表格规范提到CSS 2.1未定义height在表格行组(tbody/thead/tfoot)上的含义……
简单说就是,一份规范暗示height能用到行组上,另一份又明确表示没定义这个用法,这就给浏览器留下了自行实现的空间。
各浏览器的实现逻辑
- Chrome:选择忽略
tbody的height属性,这个做法其实是遵循了“标准未明确定义作用”的原则——既然规范没说该怎么处理,那干脆不生效,避免引入潜在的布局问题。 - Firefox(FF)和IE11:这两个浏览器选择了给行组应用
height属性,相当于自行补全了标准未明确的部分,本质上也不算违反标准,因为规范只是没定义,并没有禁止这种实现。
结论
严格来讲,没有绝对“符合标准”的处理方式,因为CSS 2.1本身在这里存在定义模糊的漏洞。后续的CSS Table Level 3规范也没有补充明确这一点,所以这种浏览器差异还会持续存在。
如果你的需求是让行组高度在各浏览器保持一致,建议用替代方案:比如给整个表格设置固定高度并配合table-layout: fixed,或者用div模拟表格结构来控制高度,这样兼容性会更好。
内容的提问来源于stack exchange,提问作者Mr Lister
相关产品推荐
相关产品推荐

