CSS 样式化表格——WEB开发系列24

表格在网页设计中扮演了重要角色,尤其是在展示数据和信息时。尽管 HTML 表格提供了结构化的数据展示,但要使其看起来既美观又实用,CSS 样式化至关重要。


一、典型的 HTML 表格

在了解如何样式化表格之前,我们首先来看看一个典型的 HTML 表格结构。一个基本的 HTML 表格由 ​​<table>​​、​​<thead>​​、​​<tbody>​​ 和 ​​<tfoot>​​ 元素组成,分别用于定义表格、表头、表体和表脚。表格中的每一行由 ​​<tr>​​ 定义,而每一列由 ​​<td>​​(数据单元格)或 ​​<th>​​(表头单元格)定义。


示例: 基本 HTML 表格
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基础 HTML 表格</title>
</head>
<body>
    <h1>员工信息表</h1>
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>职位</th>
                <th>部门</th>
                <th>薪资</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>开发工程师</td>
                <td>技术部</td>
                <td>¥8000</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>设计师</td>
                <td>设计部</td>
                <td>¥7000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">数据来源:公司人力资源部</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

上述例子中创建了一个简单的员工信息表,包含了表头、表体和表脚,表头定义了表格的列名,表体包含了实际的数据行,而表脚提供了额外的信息或说明。


二、样式化我们的表格

1、基本样式

为了让表格看起来更加美观,我们可以使用 CSS 来设置表格的边框、背景色、文本对齐方式等基本样式。


示例: 基本表格样式
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>样式化表格</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse; /* 合并表格边框 */
        }

        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }

        th {
            background-color: #f2f2f2;
        }

        tr:nth-child(even) {
            background-color: #f9f9f9;
        }

        tr:hover {
            background-color: #e2e2e2;
        }
    </style>
</head>
<body>
    <h1>样式化表格示例</h1>
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>职位</th>
                <th>部门</th>
                <th>薪资</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>开发工程师</td>
                <td>技术部</td>
                <td>¥8000</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>设计师</td>
                <td>设计部</td>
                <td>¥7000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">数据来源:公司人力资源部</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

我们对表格应用了一些基本的样式:边框、内边距、背景颜色和交替行的背景色,另外还添加了悬停效果,以便在用户将鼠标悬停在行上时,背景色会有所变化。


2、间距和布局

控制表格的间距和布局是确保表格在不同屏幕上显示良好的关键。可以使用 CSS 的 ​​padding​​ 和 ​​margin​​ 属性来调整间距,使用 ​​border-spacing​​ 属性来设置单元格之间的间距。


示例: 调整表格间距和布局
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格间距和布局</title>
    <style>
        table {
            width: 80%;
            margin: 20px auto; /* 自动居中 */
            border-spacing: 0; /* 单元格之间的间距 */
        }

        th, td {
            border: 1px solid #ddd;
            padding: 12px; /* 单元格内边距 */
        }

        th {
            background-color: #4CAF50;
            color: white;
        }

        tr:nth-child(even) {
            background-color: #f2f2f2;
        }

        tr:hover {
            background-color: #ddd;
        }
    </style>
</head>
<body>
    <h1>表格间距和布局示例</h1>
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>职位</th>
                <th>部门</th>
                <th>薪资</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>开发工程师</td>
                <td>技术部</td>
                <td>¥8000</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>设计师</td>
                <td>设计部</td>
                <td>¥7000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">数据来源:公司人力资源部</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

这个例子设置表格的宽度为页面宽度的 80%,并将表格居中显示,使用 ​​border-spacing​​ 属性来调整单元格之间的间距,并增加了单元格的内边距,使得内容更为舒适易读。


三、简单的排版

1、字体和文本对齐

通过 CSS,我们可以控制表格中的字体和文本对齐方式,使其符合设计需求。


示例: 表格排版样式
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格排版样式</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
            font-family: Arial, sans-serif; /* 字体 */
        }

        th, td {
            border: 1px solid #ddd;
            padding: 10px;
            text-align: center; /* 中央对齐 */
        }

        th {
            background-color: #2196F3;
            color: white;
            font-weight: bold; /* 加粗 */
        }

        td {
            color: #555;
        }
    </style>
</head>
<body>
    <h1>表格排版样式示例</h1>
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>职位</th>
                <th>部门</th>
                <th>薪资</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>开发工程师</td>
                <td>技术部</td>
                <td>¥8000</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>设计师</td>
                <td>设计部</td>
                <td>¥7000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">数据来源:公司人力资源部</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

示例中我们设置了字体样式为 Arial,并将单元格中的文本居中对齐,表头使用了更为显眼的颜色和加粗字体,使其更加突出。


2、颜色样式

颜色不仅可以提升表格的视觉效果,还可以帮助突出关键信息。使用 CSS 可以轻松地为表格添加背景色、边框颜色等样式。

示例: 表格颜色样式
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格颜色样式</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
        }

        th, td {
            border: 2px solid #4CAF50;
            padding: 10px;
            text-align: left;
        }

        th {
            background-color: #4CAF50;
            color: white;
        }

        tr:nth-child(even) {
            background-color: #f2f2f2;
        }

        tr:nth-child(odd) {
            background-color: #ffffff;
        }

        tr:hover {
            background-color: #d1e7dd;
        }
    </style>
</head>
<body>
    <h1>表格颜色样式示例</h1>
    <table>
        <thead>
            <tr>
                <th>姓名</th>
                <th>职位</th>
                <th>部门</th>
                <th>薪资</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>张三</td>
                <td>开发工程师</td>
                <td>技术部</td>
                <td>¥8000</td>
            </tr>
            <tr>
                <td>李四</td>
                <td>设计师</td>
                <td>设计部</td>
                <td>¥7000</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">数据来源:公司人力资源部</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

示例中我们使用了不同的背景颜色来区分奇数行和偶数行,同时设置了悬停效果的背景颜色,使得用户在浏览时更容易阅读和辨别数据。


四、综合练习题

下面我们自己动手来练习一下以下的两道题目吧:

题 1: 创建一个自定义的产品表格

要求:

  1. 创建一个产品表格,包含以下列:产品名、类别、价格和库存。
  2. 使用 CSS 样式化表格,确保表头使用醒目的颜色,表体交替行有不同的背景色,并添加悬停效果。
  3. 添加一个"总计"行,在表脚部分显示总产品数和库存总数。

示例代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>产品表格</title>
    <style>
        table {
            width: 90%;
            margin: 20px auto;
            border-collapse: collapse;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        th, td {
            border: 1px solid #ccc;
            padding: 12px;
            text-align: left;
        }

        th {
            background-color: #ff5722;
            color: white;
        }

        tr:nth-child(even) {
            background-color: #f9f9f9;
        }

        tr:hover {
            background-color: #e0e0e0;
        }

        tfoot {
            font-weight: bold;
        }
    </style>
</head>
<body>
    <h1>产品信息表</h1>
    <table>
        <thead>
            <tr>
                <th>产品名</th>
                <th>类别</th>
                <th>价格</th>
                <th>库存</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>笔记本</td>
                <td>电子产品</td>
                <td>¥500</td>
                <td>50</td>
            </tr>
            <tr>
                <td>智能手机</td>
                <td>电子产品</td>
                <td>¥3000</td>
                <td>20</td>
            </tr>
            <!-- 添加更多产品行 -->
        </tbody>
        <tfoot>
            <tr>
                <td colspan="3">总计</td>
                <td>70</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

题 2: 设计一个学生成绩表格

要求:

  1. 创建一个学生成绩表格,包含以下列:学生姓名、科目、成绩。
  2. 使用 CSS 样式化表格,使表头具有背景色和白色文本,所有单元格的文本居中对齐,表格宽度设置为 100%。
  3. 添加一个行样式,当成绩低于 60 时,该行背景色为红色;当成绩在 60 到 80 之间时,背景色为黄色;当成绩在 80 以上时,背景色为绿色。

示例代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>学生成绩表</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
            font-family: 'Arial', sans-serif;
        }

        th, td {
            border: 1px solid #ddd;
            padding: 10px;
            text-align: center;
        }

        th {
            background-color: #2196F3;
            color: white;
        }

        .low {
            background-color: #ffcccc;
        }

        .medium {
            background-color: #ffffcc;
        }

        .high {
            background-color: #ccffcc;
        }
    </style>
</head>
<body>
    <h1>学生成绩表</h1>
    <table>
        <thead>
            <tr>
                <th>学生姓名</th>
                <th>科目</th>
                <th>成绩</th>
            </tr>
        </thead>
        <tbody>
            <tr class="low">
                <td>王五</td>
                <td>数学</td>
                <td>45</td>
            </tr>
            <tr class="medium">
                <td>赵六</td>
                <td>英语</td>
                <td>75</td>
            </tr>
            <tr class="high">
                <td>孙七</td>
                <td>物理</td>
                <td>90</td>
            </tr>
        </tbody>
    </table>
</body>
</html>

如有表述错误及欠缺之处敬请批评指正。

相关推荐
阿珊和她的猫4 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
_Kayo_6 小时前
node.js 学习笔记3 HTTP
笔记·学习
加班是不可能的,除非双倍日工资8 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi9 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
CCCC13101639 小时前
嵌入式学习(day 28)线程
jvm·学习
gnip9 小时前
vite和webpack打包结构控制
前端·javascript
excel9 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
星星火柴93610 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
小狗爱吃黄桃罐头10 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习
阿华的代码王国10 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端