表格有三大元素:table、tr、td。
表格
表格由<table>标签来定义。每个表格均有若干行(由<tr>标签定义),每行被分割为若干单元格(由<td>标签定义)。
字母tr指表格行(table row);字母td指表格数据(table data),即数据单元格的内容。
数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>无边框表格</title>
</head>
<body>
<table>
<tr>
<td>(1, 1)</td>
<td>(1, 2)</td>
</tr>
<tr>
<td>(2, 1)</td>
<td>(2, 2)</td>
</tr>
</table>
</body>
</html>
在浏览器中显示如下:
表格和边框属性
如果不定义边框属性,表格将不显示边框。有时这很有用,但大多数时候,我们希望显示边框。
使用边框属性border来显示一个带有边框的表格。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>有边框表格</title>
</head>
<body>
<table border="1px"> <!-- 单位是像素,可省略 -->
<tr>
<td>(1, 1)</td>
<td>(1, 2)</td>
</tr>
<tr>
<td>(2, 1)</td>
<td>(2, 2)</td>
</tr>
</table>
</body>
</html>
但是不建议使用border属性定义边框,推荐使用css
表格的表头
表格的表头使用<th>标签定义。
大多数浏览器会把表头显示为粗体居中的文本。
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>有表头的表格</title>
</head>
<body>
<table border="1px">
<tr>
<th>第一列</th>
<th>第二列</th>
</tr>
<tr>
<td>(1, 1)第一行第一列</td>
<td>(1, 2)第一行第二列</td>
</tr>
<tr>
<td>(2, 1)第二行第一列</td>
<td>(2, 2)第二行第二列</td>
</tr>
</table>
</body>
</html>
表格中的空单元格
在一些浏览器中,没有内容的表格单元显示得不太友好。如果某个单元格是空的(没有内容),浏览器可能无法显示出这个单元格的边框。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>有空单元格的表格</title>
</head>
<body>
<table border="1px">
<tr>
<td>(1, 1)</td>
<td>(1, 2)</td>
</tr>
<tr>
<td> </td>
<td>(2, 2)</td>
</tr>
</table>
</body>
</html>
为了避免这种情况,在空单元格中添加一个空格占位符,就可以将边框显示出来
合并单元格
使用属性colspan和rowspan
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>有合并单元格的表格</title>
</head>
<body>
<table border="1px">
<tr>
<th>第一列</th>
<th>第二列</th>
</tr>
<tr>
<td rowspan="2">(1, 1)第一行第一列</td>
<td>(1, 2)第一行第二列</td>
</tr>
<tr>
<td>(2, 2)第二行第二列</td>
</tr>
<tr>
<td colspan="2">(3, 1)第三行第一列</td>
</tr>
</table>
</body>
</html>
附:其实还有<thead><tbody><tfoot>这三个标签,但是因为浏览器支持太差,所以很少出现。