<th>
<table>
<tr>
<td>公司</td>
<td>雇员</td>
<td>成立于</td>
</tr>
<tr>
<td>ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td>XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
公司 | 雇员 | 成立于 |
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
公司 | 雇员 | 成立于 |
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
公司,雇员,成立于,ACME Inc,1000,1947,XYZ Corp,2000,1973。不是十分容易明白其中的关系。
<th>
标签取代表头的<td>
标签即可。<table>
<tr>
<th>公司</th>
<th>雇员</th>
<th>成立于</th>
</tr>
<tr>
<td>ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td>XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
公司 | 雇员 | 成立于 |
---|---|---|
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
公司: ACME Inc. ,雇员: 1000,成立于: 1947., 以此类推。比之前好多了。
<caption>
<caption>
标签可以为表格提供一个简短的说明,和图像的说明比较类似。默认情况下,大部分可视化浏览器显示表格标题在表格的上方中央。CSS里的caption-side属性用来控制表格标题显示的地方。大部分浏览器只能把表格标题显示在表格的上方或者下方,只有一些浏览器支持左边或者右边。这个就留给大家去试试了。 <caption>
标签一定要紧接着开始的<table>
标签写,如下:<table>
<caption>Table 1: Company data</caption>
<tr>
<th>Company</th>
<th>Employees</th>
<th>Founded</th>
</tr>
<tr>
<td>ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td>XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
Company | Employees | Founded |
---|---|---|
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
summary
属性summary
属性。这样可以提供比<caption>
标签更详细的描述。<table summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<th>Company</th>
<th>Employees</th>
<th>Founded</th>
</tr>
<tr>
<td>ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td>XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
abbr
属性abbr
属性,可以给那些长的表头提供简写形式,取代表头的内容。abbr
属性是可选的,大部分情况表头还是(或许是应该)比较简短的。abbr
属性就可以这样用:<table summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<th abbr="Company">Company Name</th>
<th abbr="Employees">Number of Employees</th>
<th abbr="Founded">Foundation Year</th>
</tr>
<tr>
<td>ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td>XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
Company Name | Number of Employees | Foundation Year |
---|---|---|
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
title
属性或者<abbr>
标签提供一个更长的说明。scope
,id
,headers
属性<table summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<td></td>
<th>Employees</th>
<th>Founded</th>
</tr>
<tr>
<th>ACME Inc</th>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<th>XYZ Corp</th>
<td>2000</td>
<td>1973</td>
</tr>
</table>
Employees | Founded | |
---|---|---|
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
scope
属性。<table summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<td></td>
<th scope="col">Employees</th>
<th scope="col">Founded</th>
</tr>
<tr>
<th scope="row">ACME Inc</th>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<th scope="row">XYZ Corp</th>
<td>2000</td>
<td>1973</td>
</tr>
</table>
col
: 列表头 row
: 行表头 col
的scope
属性,声明他们是下面数据单元格的表头。同样的,给每行的开头<th>
加上值为row
的scope
属性声明他们是右边数据单元格的表头。Scope
属性还有两个值:colgroup
: 定义列组(column group)的表头信息 rowgroup
: 定义行组(row group)的表头信息 <colgroup>
标签定义的。行组则是由<thead>
、<tfoot>
和<tbody>
定义的。稍后我将会详细介绍它们。<td>
标签也应该加上scope
属性:<table summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<th scope="col">Company</th>
<th scope="col">Employees</th>
<th scope="col">Founded</th>
</tr>
<tr>
<td scope="row">ACME Inc</td>
<td>1000</td>
<td>1947</td>
</tr>
<tr>
<td scope="row">XYZ Corp</td>
<td>2000</td>
<td>1973</td>
</tr>
</table>
td[scope] {
font-weight:bold;
}
Company | Employees | Founded |
---|---|---|
ACME Inc | 1000 | 1947 |
XYZ Corp | 2000 | 1973 |
ID
。然后为下面的数据单元格添加headers
属性,这个headers
属性值包含用空格分开的各个ID
,这些ID
代表的表头各自关联到该数据单元格上。这样做很复杂,只是当有超过两个表头的单元格才用。在复杂的和不规则的表格中,scope
属性就力不从心了。<table class="extbl" summary="The number of employees and the foundation year of some imaginary companies.">
<caption>Table 1: Company data</caption>
<tr>
<td rowspan="2"></td>
<th id="employees" colspan="2">Employees</th>
<th id="founded" rowspan="2">Founded</th>
</tr>
<tr>
<th id="men">Men</th>
<th id="women">Women</th>
</tr>
<tr>
<th id="acme">ACME Inc</th>
<td headers="acme employees men">700</td>
<td headers="acme employees women">300</td>
<td headers="acme founded">1947</td>
</tr>
<tr>
<th id="xyz">XYZ Corp</th>
<td headers="xyz employees men">1200</td>
<td headers="xyz employees women">800</td>
<td headers="xyz founded">1973</td>
</tr>
</table>
Employees | Founded | ||
---|---|---|---|
Men | Women | ||
ACME Inc | 700 | 300 | 1947 |
XYZ Corp | 1200 | 800 | 1973 |
scope
属性吧。rowspan
属性和colspan
属性常被用来让单元格跨几列或跨几行,来布局那些经过整齐切割的图像。这两个属性现在还在用, 因为并没有CSS来控制单元格的跨行和跨列。仔细想想,其实是很有道理的:跨行和跨列示表格结构(structure)的一部分,而不是其表现(presentation)。<col>
和<colgroup>
<colgroup>
和<col>
标签来为相关的表格列分组。这样就可以(在一些浏览器中)使用CSS来单独的为列样式化。列组也可以使用scope
属性来标明其表头信息。<thead>
, <tfoot>
, 和<tbody>
<thead>
), 表尾(或表注)组(<tfoot>
), 然后是一个或多个表身(<tbody>
) 。每一个行组必须包含一个或多个表格行。 <thead>
,那么它必须出现在<tfoot>
和<tbody>
之前。而<tfoot>
则必须出现在<tbody>
之前。如果没有使用<thead>
和<tfoot>
,那么<tbody>
标签也可以不加(也不是非得不加,随你喜欢了)。一个有行组的表格结构看起来如下:<table>
<thead>
<tr></tr>
… 更多表头的行
</thead>
<tfoot>
<tr></tr>
… 更多表尾的行
</tfoot>
<tbody>
<tr></tr>
… 第一个<tbody>的行
</tbody>
<tbody>
<tr></tr>
… 第二个<tbody>的行
</tbody>
… 更多的<tbody>
</table>
<caption>
、什么都没有,没有格式,陈旧的布局表格除了<table>
,<tr>
,<td>
什么都可以不要。另外还要承担风险,即如何面对那些非可视的用户代理(UA)。<th>
加上scope
属性就可以了,又快又简单。axis
属性,并且对于<colgroup>
和<col>
的描述也不是很深。对于格式化和样式化还有border
模型我也没有深究,还缺少一个真正复杂的表格的例子。