,内部可以包含多个设置display: table-row;的元素和其他普通元素。
设置这些属性的元素,设置float、margin、padding和width是无效的,并且元素的width自适应于内容的宽度。如果设置元素的height大于元素内容的高度,则实际高度为设置的height,反之设置元素的height小于元素内容的高度,则实际高度为内容的高度。
个人感觉这三个属性,更多是为了方便元素分组,增加代码可读性,实际意义不大。
<style>
.table {
display: table;
background: pink;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid #cccccc;
}
.header-group {
display: table-header-group;
width: 200px;
height: 10px;
margin-left: 50px;
padding: 10px;
}
.body-group {
display: table-row-group;
width: 200px;
height: 100px;
margin-left: 50px;
padding: 10px;
}
.footer-group {
display: table-footer-group;
width: 200px;
height: 10px;
margin-left: 50px;
padding: 10px;
}
style>
<div class="table">
<div class="header-group">
<div class="row row1">
<div class="cell cell1">header张三div>
<div class="cell cell2">header李四div>
<div class="cell cell3">header王五div>
div>
<div class="row row1">
<div class="cell cell1">header张三div>
<div class="cell cell2">header李四div>
<div class="cell cell3">header王五div>
div>
<span>111111span>
div>
<div class="body-group">
<div class="row row2">
<div class="cell cell1">body张三三div>
<div class="cell cell2">body李四四div>
<div class="cell cell3">body王五五div>
div>
<span>222222span>
div>
<div class="footer-group">
<div class="row row2">
<div class="cell cell1">footer张三三三div>
<div class="cell cell2">footer李四四四div>
<div class="cell cell3">footer王五五五div>
div>
<span>333333span>
div>
div>

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
页面效果:

9、display: table-column;
10、display: table-column-group;
display: table-column;属性用于设置元素为表格的列,类似于HTML的,属于一个抽象的概念,并不需要写在具体的单元格上,而是写到一个单独的元素上,按照先后顺序对应表格中单元格组成的列,必须位于设置display: table-column-group;的元素内部。
display: table-column-group;属性用于设置元素为表格的列组,类似于HTML的,内部包含多个设置display: table-column;的元素,表示一组列。
设置这俩属性的元素,设置float、margin、padding和height是无效的,width和background等属性有效,因此通常用来实现对某些列的单元格进行特殊样式操作。
<style>
.table {
display: table;
background: pink;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid #cccccc;
}
.column {
display: table-column;
width: 100px;
height: 50px;
margin-left: 50px;
padding: 10px;
}
.column:nth-child(2) {
background: yellow;
}
.column-group {
display: table-column-group;
width: 100px;
height: 50px;
margin-left: 50px;
padding: 10px;
}
style>
<div class="table">
<div class="column-group">
<div class="column">div>
<div class="column">div>
<div class="column">div>
div>
<div class="row row1">
<div class="cell">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
页面效果:

11、display: table-caption;
该属性用于设置元素为表格的标题模块,类似于HTML的,同时可以结合caption-side属性实现标题模块相对于表格区域的定位。
<style>
.table {
display: table;
background: pink;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid #cccccc;
}
.caption {
display: table-caption;
caption-side: bottom;
margin: 10px;
padding: 10px;
}
style>
<div class="table">
<div class="caption">
这是表格的标题模块
div>
<div class="row row1">
...
div>
<div class="row row2">
...
div>
div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
页面效果:

三、相关属性
1、caption-side
该属性用于设置表格的标题模块(设置display: table-caption;的元素)相对于表格的位置,该属性的属性值有两种:
top(默认值):标题模块位于表格上方。bottom:标题模块位于表格的下方。- 更多内容可查看:caption-side。
2、border-collapse
该属性用于设置表格内单元格的相邻边框是分开还是合并,属性值有两种:
separate(默认值):设置相邻单元格的相邻边框不进行合并,相邻单元格都有自己的边框,因此表格中间的边框宽度将是表格最外侧边框宽度的两倍。而且只有此时可以通过border-spacing属性设置两个边框之间的距离。collapse:设置相邻单元格的相邻边框进行合并,且合并后的边框宽度为单个边框的宽度,两个单元格共用一个边框。- 更多内容请查看:border-collapse。
<style>
.table {
display: table;
background: pink;
border-collapse: collapse;
}
.table2 {
margin-top: 30px;
border-collapse: separate;
}
.table3 {
margin-top: 30px;
border-collapse: separate;
border-spacing: 5px;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid #cccccc;
}
style>
<div class="table">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
<div class="table table2">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
<div class="table table3">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
页面效果:

4、table-layout
该属性用于设置表格的布局算法,也就是如何分配单元格的宽度和调整表格的大小。属性值有两个:
auto(默认值):表格及其单元格的宽度会根据内容自动调整大小。fixed:表格和列的宽度是由 table 和 col 元素的宽度或第一行中单元格的宽度来设置的,默认一行中的单元格平分本行的宽度,如果有的单元格设置了宽度,则其余单元格平分宽度。下面行中的单元格的内容不会影响单元的宽度,但如果内容过多就很可能会溢出,因此可以结合overflow: hidden;等属性对内容进行截取。- 更多内容可查看:table-layout。
<style>
.table {
display: table;
margin-bottom: 30px;
background: pink;
table-layout: fixed;
width: 400px;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid #cccccc;
}
.table2 .cell1 {
width: 30px;
}
style>
<div class="table">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
<div class="table table2">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
页面效果:

5、vertical-align
该属性用于设置表格的单元格元素(display: table-cell;)的垂直对齐方式,也可用于设置页面中行内元素(inline)、行内块元素(inline-block)的垂直对齐方式。该属性的属性值有:
top(默认值):设置单元格的内容与该行的顶部对齐。bottom:设置单元格内容与该行的底部对齐。middle:设置单元格内容在该行内垂直居中。baseline、sub、super、text-top、text-bottom等其他属性。- 更多内容请查看:vertical-align。
<style>
.table {
display: table;
margin-bottom: 30px;
background: pink;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
height: 200px;
border: 1px solid #cccccc;
vertical-align: middle;
}
style>
<div class="table">
<div class="row row1">
<div class="cell cell1">张三div>
<div class="cell cell2">李四div>
<div class="cell cell3">王五div>
div>
<div class="row row2">
<div class="cell cell1">张三三div>
<div class="cell cell2">李四四div>
<div class="cell cell3">王五五五div>
div>
div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
页面效果:

四、参考资料
table的MDN文档
相关阅读:
【电商】电商后台系统整体介绍
Java架构师基础框架设计
软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】
5. 【非递归版】先序、中序、后序遍历 + 求数的深度(用层序遍历实现)
CentOS 7镜像下载;VMware安装CentOS 7;解决新安装的虚拟机没有网络,无法ping通网络的问题
day16-Servlet05
java springboot在当前测试类中添加临时属性 不影响application和其他范围
el-select 搜索无选项时 请求接口添加输入的值
【Java初阶】--JavaSE基础语法
qt多线程编程,信号绑定成功,槽函数不响应问题排查处理及总结
原文地址:https://blog.csdn.net/weixin_45092437/article/details/133694782