项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的table表格,没有单元格的属性和样式,经过一番思考,曲折现实了单元格的合并,即采用正行嵌套一个单独的display:table的DIV,然后在嵌套的表格DIV内部通过控制行列数和行列的高度,实现单元格合并。个人建议全新实现使用
一、CSS display属性的表格布局相关属性的解释:
table 此元素会作为块级表格来显示(类似
table-row-group 此元素会作为一个或多个行的分组来显示(类似
)。table-header-group 此元素会作为一个或多个行的分组来显示(类似 )。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似
)。table-row 此元素会作为一个表格行显示(类似
)。table-column-group 此元素会作为一个或多个列的分组来显示(类似
)。table-column 此元素会作为一个单元格列显示(类似
)table-cell 此元素会作为一个表格单元格显示(类似
和 )table-caption 此元素会作为一个表格标题显示(类似
)二、示例代码
1、普通表格
XML/HTML Code复制内容到剪贴板
html>
display普通表格.table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
.table {display: table; width: 80%; border-collapse: collapse;}
.table-tr {display: table-row; height: 30px;}
.table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
.table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
省份/直辖市
GDP(亿元)
增长率
广东
72812
8.0%
河南
37010
8.3%
江苏
70116
8.5%
运行效果
2、列合并实现表格
实现思路:基于display:table的表格实现,没有
XML/HTML Code复制内容到剪贴板
html>
基于display列合并表格.table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
.table {display: table; width: 80%; border-collapse: collapse;}
.table-tr {display: table-row; height: 30px;}
.table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
.table-td {display: table-cell; height: 100%;}
.sub-table {width: 100%;height: 100%;display: table;}
.sub-table-tr {display: table-row; height: 100%;}
.sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
省份/直辖市
GDP(亿元)
增长率
广东
72812
8.0%
河南
37010
8.3%
江苏
70116
8.5%
各省/直辖市GDP平均增长率
8.26%
运行效果
3、行合并表格
行合并的实现思路:与列合并的实现思路类似,将有单元格合并的列单独嵌套一个display为table的DIV,高度=单行高*单元格合并数目的倍数,同行的其他列同样均单独嵌套DIV,实例代码如下
XML/HTML Code复制内容到剪贴板
html>
基于display的行合并表格.table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
.table {display: table; width: 80%; border-collapse: collapse;}
.table-tr {display: table-row; height: 30px;}
.table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
.table-td {display: table-cell; height: 100%;}
.sub-table {width: 100%;height: 100%;display: table;}
.sub-table-tr {display: table-row; height: 100%;}
.sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
省份/直辖市
GDP(亿元)
增长率
广东
72812
8.0%
河南
江苏
37010
70116