HTML 表格

表格本身并不是用来布局,而是用来展示表格数据

1.基本结构

  • 表格标签
标签 说明
table 表格标签
tr 行标签
th 单元格标签(表头,粗体居中)
td 单元格标签
  • 基本代码
<body style="padding:30px;">
    <table>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
        <tr>
            <td>张三丰</td>
            <td>120</td>
        </tr>
        <tr>
            <td>杨过</td>
            <td>24</td>
        </tr>
    </table>
</body>

2.表格的标题

  • caption标签用来定义表格的标题,caption标签的文本会在表格上方居中显示
<body style="padding:30px;">
    <table>
        <caption>我是表格的标题</caption>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>简介</th>
        </tr>
        <tr>
            <td>张三丰</td>
            <td>120</td>
            <td>本名张君宝,自创太极拳剑,将武当派发扬光大</td>
        </tr>
        <tr>
            <td>杨过</td>
            <td>24</td>
            <td>金庸武侠小说《神雕侠侣》的主人公</td>
        </tr>
    </table>
</body>

3.table标签的属性

  • table标签有以下几个属性:

  • 注意:表格的属性本质上还是操作css实现的,优先级低于用户设置的css样式,这些属性都已过,请使用css进行替代

  • border属性:为表格设置边框大小(默认0,就是无边框),border属性值只会影响table标签的border-width样式属性,本质上还是操作css

<body style="padding:30px;">
    <table border="1">
        ...
    </table>
    <table border="10">
        ...
    </table>
</body>

  • cellspacing属性:设置各个单元格之间的间距,默认值为2,可以通过操作css的border-spacing属性来实现
<body style="padding:30px;">
    <table border="1" cellspacing="5">
        ...
    </table>
    <table border="1" cellspacing="0">
        ...
    </table>
</body>

  • cellpadding属性:设置单元格的内边距,默认值为1,实际上是通过操作th/td标签的padding样式进行控制的
<body style="padding:30px;">
    <table border="1" cellspacing="0">
        ...
    </table>
    <table border="1" cellspacing="0" cellpadding="10">
        ...
    </table>
</body>

  • width/height属性:设置表格的宽高,如果表格设置的宽高大于表格子元素的总大小,则会把剩余的空间均分给子元素,如果设置的宽度小于表格子元素的总大小,则会压缩子元素的宽度。
<table border="1" cellspacing="0" cellpadding="10" width="700">
    ...
</table>
  • 如果不设置宽度,表格宽度由单元格撑开,但是不会超出其父容器的宽度,不会出现滚动条,如图:

  • align属性:设置表格的在父元素中的水平对齐方式,这个属性可以用于td标签

<table border="1" cellspacing="0" cellpadding="10" align="center">
    ...
</table>

4.th/td标签

  • th标签用于表头的单元格,默认字体是加粗的,且水平居中对其。
  • td标签用于普通的单元格,默认水平左对齐。
  • 同一个列的th/td标签的宽度是一致的,以宽度最大的那列为准,同理,同一行th/td标签的高度也是一致的,以同行中高度最大那个为准

5.单元格合并

在td标签中设置下面的属性就可以进行单元格合并
colspan:跨列合并单元格(横向)
rowspan:跨行合并单元格(纵向)

<body style="padding:30px;">
    <table border="1" cellspacing="0" cellpadding="10" align="center">
        <tr>
            <th>/</th>
            <th>CPU</th>
            <th>主板</th>
            <th>显卡</th>
            <th>总价</th>
        </tr>
        <tr>
            <td>配置一</td>
            <!-- 跨列合并 -->
            <td colspan="2" align="center">1349</td>
            <!-- <td>459</td> -->
            <td>1099</td>
            <td>2448</td>
        </tr>
        <tr>
            <td>配置二</td>
            <td>949</td>
            <td>459</td>
            <td>1099</td>
            <!-- 跨行合并 -->
            <td rowspan="2">2507</td>
        </tr>
        <tr>
            <td>配置三</td>
            <td>549</td>
            <td>459</td>
            <td>1499</td>
            <!-- <td>2507</td> -->
        </tr>
    </table>
</body>

6.骚操作系列:利用背景图绘制表格边框

  • 分别为table标签和td标签设置不同的背景色,即可生成一张“带边框”的表格
table{
    background-color: red;
}
td{
    background-color: #fff;
}

  • 之所以有这样的效果,是因为默认每个单元格之间存在间距,也就是前面所说的cellspacing属性(css中为border-spacing),表格的背景色通过这些间距透过来形成“边框”,只要把这属性置0,这种效果就会消失
<table class="bg-table" cellspacing="0"></table>

7.基本封装

  • 表格默认的样式是非常简陋的,没有基本的分割线和内边距,一般要为其设置基本样式,最简单的办法就是引入bootstrarp.css的table类,例如:
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

<table class="table">

</table>
  • 或者自己封装,下面是仿bootstrarp的css
<style>
        /* 宽度100% */
        .table{
            width:100%;
            /* 去除单元格边距 */
            border-spacing:0;
            /* 重制文本样式 */
            font-size: 14px;
            color: #333;
        }

        /* 表格行为怪异盒模型 */
        .table tr{
            box-sizing: border-box;
        }

        /* 所有单元格左对齐 默认有上边框 */
        .table tr th,
        .table tr td{
            text-align: left;
            border-top: 1px solid #ddd;
            padding: 8px;
        }

        /* 优化,为最后一行添加边框 */
        .table tbody tr:last-child td{
            border-bottom: 1px solid #ddd;
        }

    </style>

8.列的宽度

  • table-layout这个css属性描述的是表格如何分配多余的宽度给各个列,他有2个值:
属性值 说明
auto 默认,按宽度比例分配,哪列宽度越大,分配的空间越多
fixed 均等分配总空间,及:列宽度 = 表格宽度/列数
.table{
    table-layout: fixed;
}

对比图:

9.col标签

  • 使用col标签可以给对应列统一设置样式,通过下标进行关联,可以利用这个特性做固定表头
<table class="table table-bordered">
    <colgroup>
        <col style="background-color:red" width="60">
        <col style="background-color:yellow">
        <col style="background-color:lightblue">
    </colgroup>
    <tr>
        <td>1</td>
        <td>col标签的作用</td>
        <td>使用col标签可以给对应列统一设置样式,通过下标进行关联</td>

    </tr>
    <tr>
        <td>2</td>
        <td>width属性说明1</td>
        <td>如果所有的col标签都设置了width属性,则他们按比例分配所有的宽度,width的值此时可以看作比例系数</td>

    </tr>
    <tr>
        <td>3</td>
        <td>width属性说明2</td>
        <td>如果只有一部分col标签设定了width属性,则width的值就是那一列的宽度,而没有设定的那些列,将自动分配剩余空间</td>
    </tr>
</table>

代码运行结果:

  • 调整width的值
<colgroup>
        <col style="background-color:red" width="1">
        <col style="background-color:yellow" width="2">
        <col style="background-color:lightblue" width="3">
    </colgroup>

posted @ 2019-11-27 23:24  ---空白---  阅读(3203)  评论(2编辑  收藏  举报