嵌套表格列无法占满100%高度的问题排查
解决表格嵌套列无法占满行高的问题
问题原因
- 嵌套的
innerTable默认不会自动填充父级<td>的高度,父级<td>也未设置强制内部元素撑满高度的样式 - 你给
.fulfillmentLine td设置了固定height:100px,这会限制单元格高度,无法自适应左侧列的内容高度 - 表格单元格默认
vertical-align: baseline,导致内部嵌套表格不会垂直拉伸
修复方案
移除固定高度限制
删掉.fulfillmentLine td中的height:100px,让单元格高度随左侧内容自适应。让父级
<td>占满整行高度
修改.fulfillmentLine的CSS:
.fulfillmentLine { border-bottom: 1px solid black; border-left: 1px solid black; height: 100%; vertical-align: top; }
- 让嵌套表格占满父容器
更新.innerTable的CSS,确保它填满父级<td>的宽高:
.innerTable { padding: 0; font-size: 20px; width: 100%; height: 100%; display: table; } .innerTable td { height: 100%; }
- 修正HTML结构错误
删除原代码中多余的</div>和</table>标签,避免结构异常影响渲染。
修改后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Table</title> <style> .innerTable { padding: 0; font-size: 20px; width: 100%; height: 100%; display: table; } .innerTable td { height: 100%; } .orderLine { width: 130px; padding: 3px; border-left: 1px solid black; border-bottom: 1px solid black; } .fulfillmentLine { border-bottom: 1px solid black; border-left: 1px solid black; height: 100%; vertical-align: top; } .fulfillmentLine td { width: 50px; border-right: 1px solid black; } .orderLineEnd { border-left: 1px solid black; } .borderRight { border-right: 1px solid black; } .orderLineHeader { width: 130px; padding: 3px; border-left: 1px solid black; border-top: 1px solid black; border-bottom: 1px solid black; } .fulfillmentLineHeader { width: 130px; border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black; } .fulfillmentLineHeader td { border-top: 1px solid black; border-right: 1px solid black; text-align: center; min-width: 45px; } .bottomBorder { width: 100%; height: 1px; border-top: 1px solid black; } .itemName { width: 300px; } </style> </head> <body> <table class="bodySection o" cellpadding="0" cellspacing="0" border="0"> <tr class="orderHeaders"> <td class="orderLineHeader">Description</td> <td class="fulfillmentLineHeader borderRight" align="center"> <table cellspacing="0" cellpadding="0" class="innerTable" border="0"> <td class="borderRightThick">ABC </td> <td class="borderRightThick lightGreyRow">ABC</td> <td class="borderRightThick">ABC</td> </table> </td> </tr> <tr style="page-break-inside : avoid"> <td class="orderLine itemName">Lorem ipsum loremLorem ipsum loremLorem ipsum Lorem ipsum loremLorem ipsum loremLorem ipsum loremLorem ipsum loremLorem ipsum loremLorem ipsum loremLorem ipsum loremloremLorem ipsum loremLorem ipsum lorem</td> <td class="fulfillmentLine borderRight"> <table cellspacing="0" class="innerTable "> <td></td> <td></td> <td></td> </table> </td> </tr> </table> <br /> </body> </html>
内容的提问来源于stack exchange,提问作者ServletException
相关产品推荐
相关产品推荐

