基于CSS属性display:table的表格布局的使用

 

项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的table表格,没有单元格的属性和样式,经过一番思考,曲折现实了单元格的合并,即采用正行嵌套一个单独的display:table的DIV,然后在嵌套的表格DIV内部通过控制行列数和行列的高度,实现单元格合并。个人建议全新实现使用<table> HTML标签即可

一、CSS display属性的表格布局相关属性的解释:

  • table    此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
  • table-row-group    此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
  • table-header-group    此元素会作为一个或多个行的分组来显示(类似 <thead>)。
  • table-footer-group    此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
  • table-row    此元素会作为一个表格行显示(类似 <tr>)。
  • table-column-group    此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
  • table-column    此元素会作为一个单元格列显示(类似 <col>)
  • table-cell    此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
  • table-caption    此元素会作为一个表格标题显示(类似 <caption>)

二、示例代码

1、普通表格

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>display普通表格</title>
6 <style type="text/css">
7 .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
8 .table {display: table; width: 80%; border-collapse: collapse;}
9 .table-tr {display: table-row; height: 30px;}
10 .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
11 .table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
12 </style>
13 </head>
14 <body>
15 <div class="table">
16 <div class="table-tr">
17 <div class="table-th">省份/直辖市</div>
18 <div class="table-th">GDP(亿元)</div>
19 <div class="table-th">增长率</div>
20 </div>
21 <div class="table-tr">
22 <div class="table-td">广东</div>
23 <div class="table-td">72812</div>
24 <div class="table-td">8.0%</div>
25 </div>
26 <div class="table-tr">
27 <div class="table-td">河南</div>
28 <div class="table-td">37010</div>
29 <div class="table-td">8.3%</div>
30 </div>
31 <div class="table-tr">
32 <div class="table-td">江苏</div>
33 <div class="table-td">70116</div>
34 <div class="table-td">8.5%</div>
35 </div>
36 </div>
37 </body>
38 </html>

运行效果

2、列合并实现表格

实现思路:基于display:table的表格实现,没有<table>的rowspan和colspan单元格合并的实现,所以曲折实现,将表格每行单独嵌套一个独立的表格,这样在嵌套的独立表格内部,单元格合并就能通过控制嵌套表格的行数和列数以及单元格的宽高来实现

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>基于display列合并表格</title>
6 <style type="text/css">
7 .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
8 .table {display: table; width: 80%; border-collapse: collapse;}
9
10 .table-tr {display: table-row; height: 30px;}
11 .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
12 .table-td {display: table-cell; height: 100%;}
13
14 .sub-table {width: 100%;height: 100%;display: table;}
15 .sub-table-tr {display: table-row; height: 100%;}
16 .sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
17
18 </style>
19 </head>
20 <body>
21
22 <div class="table">
23 <div class="table-tr">
24 <div class="table-td">
25 <div class="sub-table">
26 <div class="sub-table-tr">
27 <div class="table-th" style="width: 40%;">省份/直辖市</div>
28 <div class="table-th" style="width: 30%;">GDP(亿元)</div>
29 <div class="table-th" style="width: 30%;">增长率</div>
30 </div>
31 </div>
32 </div>
33 </div>
34 <div class="table-tr">
35 <div class="table-td">
36 <div class="sub-table">
37 <div class="sub-table-tr">
38 <div class="sub-table-td" style="width: 40%;">广东</div>
39 <div class="sub-table-td" style="width: 30%;">72812</div>
40 <div class="sub-table-td" style="width: 30%;">8.0%</div>
41 </div>
42 </div>
43 </div>
44 </div>
45 <div class="table-tr">
46 <div class="table-td">
47 <div class="sub-table">
48 <div class="sub-table-tr">
49 <div class="sub-table-td" style="width: 40%;">河南</div>
50 <div class="sub-table-td" style="width: 30%;">37010</div>
51 <div class="sub-table-td" style="width: 30%;">8.3%</div>
52 </div>
53 </div>
54 </div>
55 </div>
56 <div class="table-tr">
57 <div class="table-td">
58 <div class="sub-table">
59 <div class="sub-table-tr">
60 <div class="sub-table-td" style="width: 40%;">江苏</div>
61 <div class="sub-table-td" style="width: 30%;">70116</div>
62 <div class="sub-table-td" style="width: 30%;">8.5%</div>
63 </div>
64 </div>
65 </div>
66 </div>
67 <div class="table-tr">
68 <div class="table-td">
69 <div class="sub-table">
70 <div class="sub-table-tr">
71 <div class="sub-table-td" style="width: 70%;">各省/直辖市GDP平均增长率</div>
72 <div class="sub-table-td" style="width: 30%;">8.26%</div>
73 </div>
74 </div>
75 </div>
76 </div>
77 </div>
78 </body>
79 </html>

运行效果

3、行合并表格

行合并的实现思路:与列合并的实现思路类似,将有单元格合并的列单独嵌套一个display为table的DIV,高度=单行高*单元格合并数目的倍数,同行的其他列同样均单独嵌套DIV,实例代码如下

  1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>基于display的行合并表格</title>
6 <style type="text/css">
7 .table, .table * {margin: 0 auto; padding: 0;font-size: 14px;font-family: Arial, 宋体, Helvetica, sans-serif;}
8 .table {display: table; width: 80%; border-collapse: collapse;}
9
10 .table-tr {display: table-row; height: 30px;}
11 .table-th {display: table-cell;font-weight: bold;height: 100%;border: 1px solid gray;text-align: center;vertical-align: middle;background-color:#E5E5E5;}
12 .table-td {display: table-cell; height: 100%;}
13
14 .sub-table {width: 100%;height: 100%;display: table;}
15 .sub-table-tr {display: table-row; height: 100%;}
16 .sub-table-td {display: table-cell; height: 100%;border: 1px solid gray; text-align: center;vertical-align: middle;}
17
18 </style>
19 </head>
20 <body>
21
22 <div class="table">
23 <div class="table-tr">
24 <div class="table-td">
25 <div class="sub-table">
26 <div class="sub-table-tr">
27 <div class="table-th" style="width: 40%;">省份/直辖市</div>
28 <div class="table-th" style="width: 30%;">GDP(亿元)</div>
29 <div class="table-th" style="width: 30%;">增长率</div>
30 </div>
31 </div>
32 </div>
33 </div>
34 <div class="table-tr">
35 <div class="table-td">
36 <div class="sub-table">
37 <div class="sub-table-tr">
38 <div class="sub-table-td" style="width: 40%;">广东</div>
39 <div class="sub-table-td" style="width: 30%;">72812</div>
40 <div class="sub-table-td" style="width: 30%;">8.0%</div>
41 </div>
42 </div>
43 </div>
44 </div>
45 <div class="table-tr" style="height:60px;">
46 <div class="table-td">
47 <div class="sub-table">
48 <div class="sub-table-tr">
49 <div class="sub-table-td" style="width: 40%; border: none;">
50 <div class="sub-table">
51 <div class="sub-table-tr" style="height:50%;">
52 <div class="sub-table-td" style="width: 100%; height:50%;">
53 河南
54 </div>
55 </div>
56 <div class="sub-table-tr" style="height:50%;">
57 <div class="sub-table-td" style="width: 100%; height:50%;">
58 江苏
59 </div>
60 </div>
61 </div>
62 </div>
63 <div class="sub-table-td" style="width: 30%;border: none;">
64 <div class="sub-table">
65 <div class="sub-table-tr" style="height:50%;">
66 <div class="sub-table-td" style="width: 100%; height:50%;">
67 37010
68 </div>
69 </div>
70 <div class="sub-table-tr" style="height:50%;">
71 <div class="sub-table-td" style="width: 100%; height:50%;">
72 70116
73 </div>
74 </div>
75 </div>
76
77 </div>
78
79 <div class="sub-table-td" style="width: 30%;border: none;">
80 <div class="sub-table">
81 <div class="sub-table-tr">
82 <div class="sub-table-td" style="width: 100%;">
83 8.4%
84 </div>
85 </div>
86 </div>
87 </div>
88 </div>
89 </div>
90 </div>
91 </div>
92 <div class="table-tr">
93 <div class="table-td">
94 <div class="sub-table">
95 <div class="sub-table-tr">
96 <div class="sub-table-td" style="width: 70%;">各省/直辖市GDP平均增长率</div>
97 <div class="sub-table-td" style="width: 30%;">8.26%</div>
98 </div>
99 </div>
100 </div>
101 </div>
102 </div>
103 </body>
104 </html>

运行效果:

display属性的表格布局相关属性的更多相关文章

  1. 基于CSS属性display:table的表格布局的使用

    项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的table表格,没有单元格的属性和样式,经过一番思考,曲折现实了单元格 ...

  2. html基础 表格的相关属性使用

    1.1表格的基本标签 语法结构:<table> /*整体包裹部分,包裹多个tr */ <tr> /* 表格的每一个行,包裹td */ <td></td> ...

  3. display:table 表格布局

    table 布局最大的特点 1.同行等高 2.宽度自动调节   那么table-cell是不是具备这个特点呢?答案是yes,为什么呢?css中有一个有意思的规则“创建匿名表格元素”.   拿table ...

  4. java按某属性分组并计算相关属性的和。

    工作中在处理集合的时候会经常遇到需要分组然后计算某属性的和,在java8中,通过stream来操作集合,还是非常方便的,像过滤(filter).分组(group).获取单个属性的值,总而言之,简单方便 ...

  5. css中的大小、定位、轮廓相关属性

    css中的大小.定位.轮廓相关属性 1.通过height.width属性控制组件大小 height:高度,可以设置任何有效的距离值: width:宽度,可以设置任何有效的属性值: max-height ...

  6. 【分享】谈CSS3中display属性的flex布局

    最近在学习微信小程序(重新学习微信小程序),在设计首页布局的时候,新认识了一种布局方式display:flex .guide-top{ height: 36%; display: flex; /*fl ...

  7. 复习-css列表和表格相关属性

    css列表和表格相关属性 list-style:设置所有列表属性 list-style-image:将图像设置为列表项标记,主要有url值 list-style-position:设置列表项标记的放置 ...

  8. Android 布局详解 -三表格布局(TableLayout)以及重要属性

              TableLayout跟TableRow 是一组搭配应用的布局,TableLayout置底,TableRow在TableLayout的上方,而Button.TextView等控件就 ...

  9. 浅谈CSS3中display属性的Flex布局

    浅谈CSS3中display属性的Flex布局   最近在学习微信小程序,在设计首页布局的时候,新认识了一种布局方式display:flex 1 .container { 2 display: fle ...

随机推荐

  1. CleanMyMac 4破解版-最强中文版_破解版_激活码_注册码

    最新版CleanMyMac 4中文版本已经发布了,也受到了广大用户的喜爱.众所周知, 注册码是开启软件的钥匙,在获取软件安装包之后需要有效的注册码才能激活软件.但是关于CleanMyMac 4注册码的 ...

  2. linux中,查看某个命令是来自哪个RPM包或者是通过哪个RPM包安装的

    需求描述: 今天在测试ssh命令到底是哪个RPM包,安装之后生成的,找了一些文档 在这里进行记录下,主要是rpm -qf命令的使用,查询文件在哪个包里. 操作过程: 1.通过whereis 定位ssh ...

  3. C++ 对象间的赋值与拷贝构造函数

    1.对象间的赋值 /***A.h文件***/ #pragma once class A { public: int va; A(void); A(char* name); A(const A& ...

  4. Razor------引入css文件的方法

    MVC3.0之前版本: <link href=@Url.Content("~/Content/Styles.css") rel="stylesheet" ...

  5. VC++第三方库配置-OpenSpirit 4.2.0 二次开发

    在VS中右击项目,点击属性 1.配置属性--常规--输出目录:Windows\VS2010\debug\ 2.配置属性--常规--中间目录:Windows\VS2010\debug\ 3.配置属性-- ...

  6. python2.0_day18_Django自带的用户认证模块的使用

    用户验证我们基于一个项目来学习利用Django框架中的user表实现用户认证Django练习小项目:学员管理系统设计开发 项目需求: 1.分讲师\学员\课程顾问角色, 2.学员可以属于多个班级,学员成 ...

  7. 查看系统资源使用情况:vmstat

    vmstat命令可以动态地查看系统资源的使用情况,如内存/交换分区/CPU的使用情况,通过使用该命令可以判断系统的瓶颈在哪里: [root@localhost ~]$ vmstat 1 5 # 表示每 ...

  8. docker images 详解

    docker images 用于查看本地已下载的镜像 [root@localhost ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ce ...

  9. iOS 数据类型转换

    1.NSString转化为UNICODE String:(NSString*)fname = @“Test”; char fnameStr[10]; memcpy(fnameStr, [fname c ...

  10. 《C++ Primer Plus》14.2 私有继承 学习笔记

    C++(除了成员变量之外)还有另一种实现has-a关系的途径——私有继承.使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员.(如果使用保护继承,基类的公有成员和保护成员都将称为派生类的保 ...