当前位置:首页 > 文章列表 > 文章 > 前端 > 如何制作表格?table标签使用教程

如何制作表格?table标签使用教程

2025-08-27 20:46:55 0浏览 收藏

想要掌握HTML表格制作吗?本文为你提供一份全面的

标签使用教程。从
、、、、的语义化划分,再到利用CSS美化表格,如边框合并、内边距调整、背景色设置等,详细讲解如何创建结构清晰、样式美观的表格。同时,还介绍了colspan和rowspan属性实现单元格合并,
等核心标签的运用,到
标签添加表格标题,以及scope属性提升可访问性的技巧。避免使用表格进行页面布局,推荐使用CSS Flexbox或Grid。通过本教程,你将能够轻松制作出既实用又美观的HTML表格,提升网页的用户体验和可访问性。

制作HTML表格的核心是使用

标签,并通过、
等标签构建结构;1. 使用定义表格容器;2. 用、、划分表头、表体和表尾以增强语义化;3. 在各区域内使用定义行,
定义表头单元格,定义数据单元格;4. 通过CSS设置border-collapse、padding、text-align、背景色、宽度及悬停效果来美化表格;5. 使用colspan和rowspan属性实现单元格的跨列和跨行合并;6. 添加
提供表格标题,使用scope属性提升可访问性;7. 避免用表格进行页面布局,应采用CSS Flexbox或Grid。完整掌握这些方法可创建结构清晰、样式美观且无障碍友好的表格。

表格怎么制作?table标签的基本结构是什么?

制作HTML表格,核心就是使用

标签。它就像一个容器,里面再用(行)、
(表头单元格)和(数据单元格)来搭建具体的结构。说白了,就是搭积木,先定好大框架,再往里一块块填充。

要制作一个表格,最基本的步骤是这样的:

你得先用

标签把整个表格框起来。这是所有表格内容的老大,它决定了“这里要放个表格”。

接着,表格通常会分几个区:表头、表体,有时候还有表尾。这几个区分别用

来表示。虽然不是强制要求,但从语义化和可维护性来说,强烈建议你用上它们。放表头,放具体数据,放汇总信息什么的。

在这些区里面,每一行都是一个

(table row)标签。你想有多少行数据,就写多少个

然后,每一行里面,又分两种单元格:

里有多少个
(table header)是表头单元格,通常用来定义列的标题,比如“姓名”、“年龄”之类的;(table data)是普通的数据单元格,用来放具体的内容。一个
,就决定了这一行有多少列。

举个最简单的例子,一个两行两列的表格可能长这样:

<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>25</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>30</td>
    </tr>
  </tbody>
</table>

你看,结构是不是挺清晰的?先是

包起来,然后里一行里两行
做表头,接着
做数据。

我的表格怎么那么丑?CSS如何美化表格?

嗯,光用HTML标签搭出来的表格,那真是“清水出芙蓉,天然去雕饰”——说白了就是丑。它可能连边框都没有,文字也挤在一起。美化表格,那绝对是CSS的活儿。以前我们可能会在

标签里写border="1"width="100%"这些属性,但现在,基本都用CSS了,也更灵活。

要让表格好看点,你可以从几个方面入手:

  • 边框合并: 默认情况下,表格的单元格边框是分开的,看起来有点双层边框的感觉。用border-collapse: collapse;可以把相邻单元格的边框合并成一个,这样表格看起来会更整洁。
  • 内边距: padding属性给单元格内容和边框之间留点空隙,文字就不会那么憋屈了。比如td, th { padding: 8px; }
  • 文字对齐: text-align可以控制文字在单元格里的水平对齐方式,比如leftcenterright
  • 背景色:
或者设置不同的background-color,可以让表格更有层次感,比如隔行变色,或者表头和数据区颜色不同。
  • 宽度控制:width属性来控制表格或列的宽度,让表格在页面上占据合适的位置。
  • 鼠标悬停效果:
  • 添加:hover伪类,当鼠标移上去时改变背景色,能提升用户体验。

    一个简单的CSS美化例子:

    table {
      width: 100%;
      border-collapse: collapse; /* 合并边框 */
    }
    
    th, td {
      border: 1px solid #ddd; /* 单元格边框 */
      padding: 8px;
      text-align: left; /* 左对齐 */
    }
    
    th {
      background-color: #f2f2f2; /* 表头背景色 */
      color: #333;
    }
    
    tr:nth-child(even) { /* 隔行变色 */
      background-color: #f9f9f9;
    }
    
    tr:hover { /* 鼠标悬停效果 */
      background-color: #ddd;
    }

    把这段CSS加到你的网页里,表格立马就能焕然一新。

    表格里数据太多了怎么办?colspanrowspan是什么意思?

    有时候表格结构会比较复杂,比如某个标题要跨越好几列,或者某项数据要占据好几行。这时候,colspanrowspan这两个属性就派上用场了。它们允许你合并单元格,让表格布局更灵活。

    • colspan (Column Span): 这个属性是用来合并列的。如果你想让一个单元格横向占据多列的空间,就在

    标签里加上colspan="N",这里的N是你希望它跨越的列数。 比如说,一个单元格要占据两列的位置,你就可以写colspan="2"。用了colspan的那个单元格,它后面对应的列就要少写一个,不然表格结构就乱了。

    <table>
      <tr>
        <th colspan="2">个人信息</th> <!-- 这个单元格跨两列 -->
      </tr>
      <tr>
        <td>姓名</td>
        <td>张三</td>
      </tr>
    </table>
  • rowspan (Row Span): 顾名思义,这个是用来合并行的。如果你想让一个单元格纵向占据多行的空间,就在

  • 标签里加上rowspan="N",这里的N是你希望它跨越的行数。 使用rowspan时,被它“吃掉”的那些行,在对应位置就不用再写单元格了。

    <table>
      <tr>
        <td rowspan="2">联系方式</td> <!-- 这个单元格跨两行 -->
        <td>电话:123456</td>
      </tr>
      <tr>
        <!-- 这里就不需要再写一个<td>了,因为上面的<td>已经占据了这一行的位置 -->
        <td>邮箱:xxx@example.com</td>
      </tr>
    </table>

    这两个属性用起来其实不难,但如果表格结构太复杂,滥用它们可能会让HTML代码变得难以阅读和维护。所以,在设计表格时,最好先想清楚结构,尽量保持简洁。

    除了基本的表格,还有没有更高级的用法?比如表格的语义化和可访问性?

    当然有。表格不仅仅是用来展示数据的,它也需要考虑到“语义化”和“可访问性”,尤其对于使用屏幕阅读器的用户来说,一个结构良好的表格能大大提升他们的体验。

    标签: 这是表格的标题,用来描述表格内容的整体概括。它应该放在标签的紧接着的位置。比如:caption-side属性(CSS)可以控制标题显示在表格上方还是下方。

  • 的语义化: 前面也提到了,用好这三个标签,不仅仅是为了视觉上的区分,更重要的是它们给表格赋予了明确的语义结构。屏幕阅读器可以根据这些标签,更好地理解表格的哪部分是标题、哪部分是主体、哪部分是汇总。

  • 避免用表格做布局: 这是一个老生常谈的问题了。在CSS出现之前,很多人会用表格来排版整个网页的布局。但现在,那是绝对不推荐的。表格就应该用来展示表格数据,而不是用来做页面布局。用CSS的Flexbox或Grid来做布局,才是现代Web开发的正确姿势。

  • 把这些高级用法考虑进去,你的表格不仅看起来专业,用起来也会更友好,尤其是在无障碍访问方面,能帮助到更多人。毕竟,写代码不光是为了实现功能,更是为了让更多人能顺畅地使用。

    以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

    JS获取对象所有键名的方法JS获取对象所有键名的方法
    上一篇
    JS获取对象所有键名的方法
    CAD转PDF乱码解决方法大全
    下一篇
    CAD转PDF乱码解决方法大全
    查看更多
    最新文章
    查看更多
    课程推荐
    • 前端进阶之JavaScript设计模式
      前端进阶之JavaScript设计模式
      设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
      542次学习
    • GO语言核心编程课程
      GO语言核心编程课程
      本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
      511次学习
    • 简单聊聊mysql8与网络通信
      简单聊聊mysql8与网络通信
      如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
      498次学习
    • JavaScript正则表达式基础与实战
      JavaScript正则表达式基础与实战
      在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
      487次学习
    • 从零制作响应式网站—Grid布局
      从零制作响应式网站—Grid布局
      本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
      484次学习
    查看更多
    AI推荐
    • 千音漫语:智能声音创作助手,AI配音、音视频翻译一站搞定!
      千音漫语
      千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
      383次使用
    • MiniWork:智能高效AI工具平台,一站式工作学习效率解决方案
      MiniWork
      MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
      378次使用
    • NoCode (nocode.cn):零代码构建应用、网站、管理系统,降低开发门槛
      NoCode
      NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
      370次使用
    • 达医智影:阿里巴巴达摩院医疗AI影像早筛平台,CT一扫多筛癌症急慢病
      达医智影
      达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
      382次使用
    • 智慧芽Eureka:更懂技术创新的AI Agent平台,助力研发效率飞跃
      智慧芽Eureka
      智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
      399次使用
    微信登录更方便
    • 密码登录
    • 注册账号
    登录即同意 用户协议隐私政策
    返回登录
    • 重置密码
    2023年销售数据
    scope属性: 当你使用来定义表头时,可以加上scope属性,明确这个表头是针对列还是针对行。这对于屏幕阅读器非常有用。

    • scope="col":表示这个
    是它所在列的表头。
  • scope="row":表示这个
  • 是它所在行的表头。
    <table>
      <thead>
        <tr>
          <th scope="col">姓名</th>
          <th scope="col">年龄</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th scope="row">张三</th> <!-- 这一行的表头是“张三” -->
          <td>25</td>
        </tr>
      </tbody>
    </table>