二维码

Table 布局

Table 布局

CSS 可以让 HTML 元素像表格那样排列。

下面是表格的各个 HTML 标签,所对应的布局模式。

  • table { display: table }
  • tr { display: table-row }
  • thead { display: table-header-group }
  • tbody { display: table-row-group }
  • tfoot { display: table-footer-group }
  • col { display: table-column }
  • colgroup { display: table-column-group }
  • td, th { display: table-cell }
  • caption { display: table-caption }

表格布局可以很简单地做到垂直居中。

1
2
3
4
5
div {
height: 200px;
display:table-cell;
vertical-align: middle;
}

这种写法相比下面的写法,更容易理解。

1
2
3
4
5
6
div {
height: 200px;
position: relative;
top: 50%;
transform: translateY(-50%);
}

表格布局的另一个用途是,让页尾总是显示在浏览器的最低部,即使页面高度不足一页。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
HTML 代码如下
<body>
<div class="main"></div>
<div class="footer"></div>
</body>
*/

body {
display: table;
width: 100%;
}

.main {
min-height: 100%;
}

.footer {
display: table-row;
height:1px;
}

基于上面这种底部固定的技巧,可以使用表格布局,完成圣杯布局,即页面从上到下分成页首 + 内容 + 页尾三部分,其中内容部分又分成左边栏和右边栏。

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
/*
HTML 代码如下
<div class="wrapper">
<div class="header">HEADER</div>
<div class="main">
<div class="box sidebar">Left-sidebar</div>
<div class="box content">Main Content</div>
<div class="box sidebar">Right-sidebar</div>
</div>
<div class="footer">FOOTER</div>
</div>
*/

.wrapper {
min-height: 100%;
display: table;
width: 100%;
text-align: center;
}

.header {
display: table-row;
height: 1px;
}

.main {
min-height: 100%;
display: table;
width: 100%;
}

.box {
display: table-cell;
}

.sidebar {
width: 100px;
}

.footer {
display: table-row;
height:1px;
}

利用表格的不同性质的行,可以调整行的显示位置。

  • display:table-caption使得该行显示在表格的最顶部。
  • display:table-header-group使得该行显示在表格的头部,但是位置低于table-caption的行。
  • display:table-footer-group使得该行显示在表格的底部。

参考链接


本教程来自“网道项目”(wangdoc.com),采用知识共享 署名-相同方式共享 3.0协议