CSS针对表格、列表等特定组件提供了相应的属性,通过表格相关属性可以控制表格的边框样式、表格标题所在位置、表格布局等。

表格相关属性

  表格相关属性主要用于控制表格的外观,表格相关属性有如下几个。
  ➢ border-collapse:用于设置表格里行和单元格边框的显示方式,该属性控制两个单元格的边框是合并在一起,还是按照标准的HTML样式分开。该属性有两个值,即seperate(边框分开,使得单元格的分隔线为双线)和collapse(边框合并,使得单元格的分隔线为单线)。
  ➢ border-spacing:当设置border-collapse为seperate时,该属性用于设置两个单元格边框之间的间距。
  ➢ caption-side:用于设置表格标题位于表格哪边。该属性必须和<caption.../>元素一起使用。该属性有4个值,即top、bottom、left、right,分别对应于将表格标题放在表格的上、下、左、右4处。
  ➢ empty-cells:该属性控制单元格内没有内容时,是否显示单元格边框。只有当border-collapse属性设置成seperate时,该属性才有效。该属性支持show(显示)和hide(隐藏)两个属性值。
  ➢ table-layout:用于设置表格宽度布局的方法。该属性支持auto和fixed两个属性值,其中auto是默认值,也就是平时常见的表格布局方式;fixed则指定使用固定布局方式,本节会详细介绍这种布局方式。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> 表格相关属性 </title>
    <style type="text/css">
    table {
        width: 400px;
        border: 1px solid black;
    }
    td {
        background-color:#ccc;
        border: 1px solid black;
    }
    </style>
</head>  
<body>  
<!-- 表格的单元格边框合并在一起,看起来分割线为单线,并将表格标题放在右边 -->  
border-collapse:collapse;caption-side:right;  
<table style="border-collapse:collapse;caption-side:right;">  
    <caption>表格标题</caption>
    <tr>
        <td>疯狂Java讲义</td>
        <td>轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td>经典Java EE企业应用实战</td>
    </tr>
</table>  
<!-- 表格的单元格边框分开,看起来表格分割线为双线,并隐藏空格的边框线 -->  
border-collapse:seperate;empty-cells:hide;  
<table style="border-collapse:seperate;empty-cells:hide;">  
    <tr>
        <td>疯狂Java讲义</td>
        <td>轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td></td>
    </tr>
</table>  
<!-- 表格的单元格边框分开,看起来表格分割线为双线,并设置两个单元格的间距 -->  
border-collapse:seperate;border-spacing:20px;  
<table style="border-collapse:seperate;border-spacing:20px">  
    <tr>
        <td>疯狂Java讲义</td>
        <td>轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td>经典Java EE企业应用实战</td>
    </tr>
</table>  
</body>  
</html>  

控制表格布局

  通过将表格的table-layout指定为fixed可以控制表格的布局方式,指定table-layout:fixed是一种固定布局方式。在这种布局方式下,表格的宽度会按如下方式计算得到。
  (1)如果通过<col.../><colgroup.../>元素设置了每列的宽度,则表格宽度将等于所有列宽的总和。
  (2)如果表格的第一个单元格设置了宽度信息,则表格宽度将等于第一行内所有单元格宽度的总和。
  (3)直接平均分配每列的宽度,忽略单元内容的实际宽度。

例子
<!DOCTYPE html>  
<html>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
    <title> 表格相关属性 </title>
    <style type="text/css">
    table {
        table-layout: fixed;
        border-collapse:collapse;
        border: 1px solid black;
    }
    td {
        background-color:#ccc;
        border: 1px solid black;
    }
    </style>
</head>  
<body>  
表格的宽度将由两个col元素出来
<table>  
    <!-- 表格的宽度将由如下两个col元素计算出来 -->
    <col style="width:240px"/>
    <col style="width:80px"/>
    <tr>
        <td>疯狂Java讲义</td>
        <td>轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td>经典Java EE企业应用实战</td>
    </tr>
</table>  
表格的宽度将由如下第一行的单元格的宽度计算出来
<table>  
    <tr>
        <!-- 表格的宽度将由如下第一行的单元格的宽度计算出来 -->
        <td style="width:80px">疯狂Java讲义</td>
        <td style="width:300px">轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td>经典Java EE企业应用实战</td>
    </tr>
</table>  
每列将会平均分配该表格的宽度
<!-- 每列将会平均分配该表格的宽度 -->  
<table style="width:300px">  
    <tr>
        <td>疯狂Java讲义</td>
        <td>轻量级Java EE企业应用实战</td>
    </tr>
    <tr>
        <td>疯狂Android讲义</td>
        <td>经典Java EE企业应用实战</td>
    </tr>
</table>  
</body>  
</html>  

注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。