📚 全栈开发学习系列 · 阶段二(Web 全栈)
阶段一(编程基础)8/8篇 ✅ 完结
—— 阶段二:Web 全栈 ——
09 HTML 基础:网页骨架与语义化标签(当前篇)
10 CSS 基础:样式、布局与响应式
11 JavaScript 基础:变量、DOM 与事件
12 HTTP 协议基础:请求、响应与状态码
13 FastAPI 入门:构建第一个 RESTful API
14 PostgreSQL 基础:数据库设计与 SQL 操作
15 认证授权:JWT、Session 与 Cookie
16 综合实战:带登录的博客系统

HTML 基础:网页骨架与语义化标签

从一行文本到完整页面,掌握网页的结构语言
入门篇 HTML 阶段二启航
读完本篇你将能:理解 HTML 文档的完整结构,使用文本和语义化标签组织内容,创建链接和插入图片,用列表和表格展示结构化数据,编写表单收集用户输入,独立编写一个完整的个人主页 HTML 页面。
📑 本文目录
01从命令行到网页:阶段二启航
02HTML 文档结构:网页的骨架
03文本与语义化标签
04链接与图片:连接万维网
05列表与表格:组织结构化数据
06表单:用户输入的入口
07实战:个人主页
08动手练习

01 从命令行到网页:阶段二启航

阶段一的八篇文章里,你的代码跑在终端里——Python 脚本输出文字到命令行,C 程序操作内存中的链表,Git 在后台管理版本。这些是"幕后"技能,用户看不到也摸不着。从阶段二开始,你的代码将通过浏览器与世界见面:用户打开网址,看到排版精美的页面,点击按钮提交表单,数据存入后端数据库——这就是 Web 全栈开发。

Web 全栈的起点是 HTML(HyperText Markup Language,超文本标记语言)。HTML 不是编程语言——它没有变量、没有循环、没有条件判断。HTML 是标记语言,用一组标签描述网页的内容结构:哪里是标题、哪里是段落、哪里是图片、哪里是链接。

把 HTML 标签想象成乐高积木块——每一块有固定的形状和用途:长条块做标题,方块做段落,透明窗块做图片,铰链块做链接。你不需要"编程",只需要把积木按顺序拼在一起。语义化标签就是分类好的积木套装——header 套装搭页头,nav 套装搭导航,article 套装搭文章内容。后续 CSS 是给积木上色的贴纸,JavaScript 是让积木动起来的电动组件——但一切的基础,是先把骨架搭对。

HTML = 骨架

定义内容结构:标题、段落、图片、链接、表单

CSS = 皮肤

定义视觉样式:颜色、字体、布局、动画(下篇学)

JS = 肌肉

定义交互行为:点击响应、数据请求、动态更新

02 HTML 文档结构:网页的骨架

每个 HTML 页面都有相同的骨架结构。在 macOS 上用 Vim 或任何编辑器创建一个 index.html 文件,输入以下内容,然后双击用浏览器打开:

HTML
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的第一个网页</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>这是我的第一个 HTML 页面。</p>
</body>
</html>

逐行解读:

<!DOCTYPE html>

文档类型声明,告诉浏览器这是 HTML5 文档。必须是文件第一行。

<head> 区域

页面元信息:字符编码、视口设置、标题。用户在页面上看不到这些内容。

<body> 区域

页面可见内容:标题、段落、图片、链接——用户看到的一切都在这里。

lang="zh-CN"

声明页面语言为简体中文,帮助搜索引擎和屏幕阅读器正确处理内容。

💡 小贴士
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 这行是移动端适配的关键——没有它,手机浏览器会把网页缩放到很小。每写一个 HTML 页面都应包含这行。

03 文本与语义化标签

你已经能在 body 里写 h1 和 p 了,现在学习更多文本标签。HTML5 引入了一组语义化标签——它们不改变内容外观,但告诉浏览器和搜索引擎"这段内容的角色是什么"。用 <div> 能做一切,但用语义化标签能让代码更清晰、SEO 更友好、无障碍阅读更准确。

常用文本标签

标签 用途 示例
h1 ~ h6 六级标题 页面大纲层级
p 段落 正文文本块
strong 强调(加粗) 重要内容
em 强调(斜体) 语气加重
code 行内代码 print()
blockquote 引用块 引用他人文字

语义化结构标签

HTML5 提供了一组结构标签,让页面各区域"自我介绍"——浏览器和搜索引擎一看就知道哪是页头、哪是导航、哪是正文:

HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<header>
    <nav>
        <a href="/">首页</a>
        <a href="/about">关于</a>
    </nav>
</header>
<main>
    <article>
        <h1>文章标题</h1>
        <p>文章正文段落。</p>
    </article>
</main>
<footer>
    <p>© 2026 个人网站</p>
</footer>
⚠️ 常见错误
<div class="header"> — 用 div 加 class 模拟语义化标签,浏览器和搜索引擎无法识别其含义
✓ 正确:直接使用 <header>、<nav>、<main>、<footer> 语义化标签,语义清晰且 SEO 友好。

04 链接与图片:连接万维网

网页之所以叫"超文本",就是因为页面之间能通过链接互相跳转。链接用 <a> 标签创建,图片用 <img> 标签插入。两者的 href 和 src 属性都涉及路径——理解绝对路径和相对路径的区别至关重要。

HTML
<!-- 外部链接:跳转到其他网站 -->
<a href="https://example.com">外部链接</a>
<!-- 内部链接:跳转到本站其他页面 -->
<a href="/about.html">关于页面</a>
<!-- 锚点链接:跳转到本页内某位置 -->
<a href="#section1">跳到第一节</a>
<!-- 图片:src 是路径,alt 是替代文字 -->
<img src="logo.png" alt="网站Logo" width=200>

href 是"超链接引用"(Hypertext REFerence),值可以是完整 URL(https://...)、站内路径(/about.html)或锚点(#section1)。img 的 alt 属性是图片加载失败时显示的替代文字,也是屏幕阅读器为视障用户朗读的内容——每张图片都必须有 alt。

⚠️ 常见错误
<img src="logo.png"> — 缺少 alt 属性,图片加载失败时用户不知道这里是什么
✓ 正确:<img src="logo.png" alt="网站Logo">。如果图片纯装饰,用 alt="" 空值。

05 列表与表格:组织结构化数据

列表和表格是网页中组织结构化数据的两种基本方式。列表适合展示并列关系(技能清单、操作步骤),表格适合展示二维数据(项目对比、成绩单)。

列表:无序与有序

HTML
<!-- 无序列表:项目之间没有顺序关系 -->
<ul>
    <li>Python</li>
    <li>C 语言</li>
    <li>JavaScript</li>
</ul>
<!-- 有序列表:项目之间有先后顺序 -->
<ol>
    <li>创建项目目录</li>
    <li>编写代码</li>
    <li>提交到 Git</li>
</ol>

表格:二维数据展示

用表格展示你的全栈项目清单——这正是阶段二练习项目的雏形:

HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<table>
    <thead>
        <tr>
            <th>项目名</th>
            <th>技术栈</th>
            <th>状态</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>个人博客</td>
            <td>FastAPI + React</td>
            <td>开发中</td>
        </tr>
    </tbody>
</table>

thead 放表头行(用 th 标签,默认加粗居中),tbody 放数据行(用 td 标签),tr 表示一行(table row)。

06 表单:用户输入的入口

表单是前后端交互的桥梁——用户在表单中输入数据,点击提交,数据被发送到后端处理。你在阶段二后半段会学到 FastAPI 如何接收表单数据,现在先学怎么用 HTML 搭建表单结构。

HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<form action="/submit" method="POST">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required>
    <label for="email">邮箱:</label>
    <input type="email" id="email" name="email">
    <label for="msg">留言:</label>
    <textarea id="msg" name="message" rows=4></textarea>
    <button type="submit">提交</button>
</form>

action 指定数据提交到哪个后端地址,method 指定 HTTP 方法(GET 或 POST)。label 的 for 属性值必须和 input 的 id 一致——点击 label 文字就能自动聚焦到对应输入框。

type 值 用途 浏览器验证
text 单行文本 无
password 密码(隐藏显示) 无
email 邮箱地址 检查 @ 格式
number 数字输入 只允许数字
date 日期选择 弹出日历
💡 小贴士
在浏览器中按 F12 打开开发者工具,切到 Elements 面板,可以实时查看和修改任何网页的 HTML 结构——这是学习 HTML 最快的方式。看到喜欢的网页布局,右键"检查元素"就能看到它的 HTML 代码。

07 实战:个人主页

把本篇学的所有标签组合起来,写一个完整的个人主页。这个页面包含:页头导航、自我介绍、技能列表、项目表格、联系表单。在 macOS 上创建文件,用浏览器打开即可看到效果。后续学了 CSS 和 JavaScript,可以逐步给这个页面加上样式和交互。

HTML — index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>个人主页</title>
</head>
<body>
    <header>
        <h1>张三的开发笔记</h1>
        <nav>
            <a href="#about">关于</a>
            <a href="#skills">技能</a>
            <a href="#projects">项目</a>
            <a href="#contact">联系</a>
        </nav>
    </header>
    <main>
        <section id="about">
            <h2>关于我</h2>
            <p>全栈开发学习者,正在掌握 Python、React、Flutter 全平台开发。</p>
        </section>
        <section id="skills">
            <h2>技能清单</h2>
            <ul>
                <li>Python / FastAPI</li>
                <li>React / TypeScript</li>
                <li>Linux / Git / Docker</li>
            </ul>
        </section>
        <section id="contact">
            <h2>联系我</h2>
            <form action="/contact" method="POST">
                <input type="email" name="email" placeholder="你的邮箱" required>
                <button type="submit">发送</button>
            </form>
        </section>
    </main>
    <footer><p>© 2026 张三</p</footer>
</body>
</html>

这个页面综合运用了本篇全部知识点:文档骨架(DOCTYPE、html、head、body)、语义化标签(header、nav、main、section、footer)、文本标签(h1、h2、p)、列表(ul、li)、链接(a + 锚点)、表单(form、input、button)。虽然现在还很朴素——没有颜色、没有布局——但结构已经完整。下一篇 CSS 基础会让它脱胎换骨。

08 动手练习

🟢 基础验证
创建一个 hello.html 文件,包含完整的 HTML 骨架(DOCTYPE、html、head、body),在 body 中写一个 h1 标题和一段 p 段落,内容自我介绍。保存后用浏览器打开,确认页面正常显示。按 F12 打开开发者工具,在 Elements 面板中查看你的 HTML 结构。
🟡 组合应用
用语义化标签构建一个博客文章页面 blog.html,包含:header(站点标题 + nav 导航)、main(article 内含 h1 标题、h2 小标题、p 段落、blockquote 引用)、aside(相关文章链接列表 ul)、footer(版权信息)。在文章中插入一张图片,设置 alt 属性。用锚点链接实现导航跳转。
🔴 开放挑战
为你的全栈项目作品集设计一个展示页面 portfolio.html。要求:用表格展示至少 3 个项目(项目名、技术栈、描述、状态);用有序列表展示开发流程;包含一个联系表单(姓名 text、邮箱 email、项目类型 select 下拉、需求描述 textarea、提交按钮);所有图片都有 alt 属性;页面用语义化标签分区。提示:参考本篇实战代码的结构,但要自己设计内容。
📖 知识回顾
DOCTYPE 文档声明 head / body 结构 meta charset / viewport h1~h6 标题层级 语义化标签 header/nav/main/article/section/footer a 链接 + href 路径 img 图片 + alt 属性 ul / ol / li 列表 table / thead / tbody / tr / th / td form / input / label / textarea / button F12 开发者工具
下篇预告
10 CSS 基础:样式、布局与响应式
HTML 骨架搭好了,接下来给页面穿上衣服——学习选择器、盒模型、Flex 布局和移动端适配,让你的个人主页从朴素文本变成专业页面。
关注公众号持续获取系列更新