修复HTML table实现蒙德里安红黄蓝构图的校验报错问题
蒙德里安画作HTML代码修复方案
HTML校验报错由表格结构不完整导致:当前代码共定义8列,第五、六行第一列缺失对应单元格,不符合HTML表格规范。以下修复完全保留原有画作的视觉呈现,可通过W3C HTML校验:
- 补全第五、六行第一列缺失的占位单元格,匹配原有边框样式,不破坏整体布局
- 修正CSS全局选择器导致的单元格背景色异常问题
- 移除冗余无效的CSS规则,清理重复类名
修正后完整HTML代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mondrian Style Painting</title> <link rel="stylesheet" href="../css/style.css"> </head> <body> <table id="table2"> <colgroup> <col class="w69"> <col class="w65"> <col class="w65"> <col class="w71"> <col class="w71"> <col class="w76"> <col class="w76"> <col class="w52"> </colgroup> <tr class="md"> <td class="br bb" colspan="3"> </td> <td class="br bb bl" colspan="2"> </td> <td class="br bb bl yellow" colspan="2"> </td> <td class="bb bl"> </td> </tr> <tr class="lg"> <td class="bt br bb"> </td> <td class="bt br bb bl red" colspan="4" rowspan="2"></td> <td class="bt br bb bl yellow" colspan="2"> </td> <td> </td> </tr> <tr class="lg"> <td class="bt br bb" rowspan="2"> </td> <td class="bt br bb bl"> </td> <td class="bt br bb bl"> </td> <td> </td> </tr> <tr class="sm"> <td class="bt bb bl black" colspan="2" rowspan="2"></td> <td class="bt bb bl"> </td> <td class="bt bb"> </td> <td class="bt bb bl"> </td> <td class="bt br bb"> </td> <td> </td> </tr> <tr class="sm"> <!-- 补全缺失的第一列跨2行占位单元格 --> <td class="bt br" rowspan="2"> </td> <td class="bt br yellow" rowspan="2"></td> <td class="bt bl"> </td> <td class="bt br"> </td> <td class="bt br bl blue" colspan="2" rowspan="2"></td> <td class="bt bl red" rowspan="2"></td> </tr> <tr class="sm"> <td class="bt br bl" colspan="2"></td> <td class="bt bl black"> </td> <td class="bt br bl black"> </td> </tr> </table> </body> </html>
修复说明:新增的单元格完全匹配原有边框样式,为所有空td补充空格实体避免渲染异常,移除了重复书写的bb类名,所有行跨列计数总和统一为8,符合HTML表格规范。
修正后配套CSS代码
* { box-sizing: border-box; margin: 0; padding: 0; } html, body { background-color: floralwhite; } img { border: 0; width: 404px; height: 404px; } body { width: 100%; display: flex; justify-content: space-evenly; } table { empty-cells: show; background-color: #fefefe; border: 0; width: 389px; height: 389px; margin: 6px; border-collapse: collapse; } tr { border: 0 none transparent; } td { border: 0 none transparent; background-color: #fefefe; } .bl { border-left: var(--border-width, 4px) solid black; } .bt { border-top: var(--border-width, 4px) solid black; } .br { border-right: var(--border-width, 4px) solid black; } .bb { border-bottom: var(--border-width, 4px) solid black; } .red { background-color: #da422a; } .yellow { background-color: #f8ce2e; } .black { background-color: black; } .blue { background-color: #3c5f99; } .sm { height: 40px; } .md { height: 58px; } .lg { height: 75px; } .w69{ width: 69px; } .w65{ width: 65px; } .w71{ width: 71px; } .w76{ width: 76px; } .w52{ width: 52px; }
修复说明:移除了原CSS中无效的thead { display: none }规则,修正了全局选择器强制所有元素背景为花白色的问题,为td设置默认白色背景,和蒙德里安画作的白底效果一致。
内容的提问来源于stack exchange,提问作者JackHoxton
相关产品推荐
相关产品推荐

