Skip to content

HTML 入门:构建 Web 的基石

打开任意网页,右键”查看源代码”,你会看到一堆尖括号包裹的文本。这就是 HTML——网页的骨架和灵魂。

🎯 HTML 是什么#

HTML(HyperText Markup Language,超文本标记语言)是构建网页的标准语言。它不是编程语言,而是一种标记语言,用来描述网页的结构和内容。

┌─────────────────────────────────────────┐
│ 浏览器 │
│ ┌───────────────────────────────────┐ │
│ │ HTML(结构) │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ CSS(样式) │ │ │
│ │ │ ┌─────────────────┐ │ │ │
│ │ │ │ JavaScript │ │ │ │
│ │ │ │ (行为) │ │ │ │
│ │ │ └─────────────────┘ │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘

三者分工明确:

文档基本结构#

每个 HTML 文档都遵循相同的基本结构:

<!doctype html>
<html lang="zh-Hans">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>我的第一个网页</title>
</head>
<body>
<h1>你好,世界!</h1>
<p>这是我的第一个网页。</p>
</body>
</html>

逐行解析:

代码作用
<!DOCTYPE html>声明文档类型为 HTML5
<html lang="zh-Hans">根元素,lang 指定语言为简体中文
<head>头部区域,包含元数据(不显示在页面上)
<meta charset="UTF-8">字符编码,支持中文等多语言字符
<meta name="viewport">视口设置,确保移动端正确显示
<title>页面标题,显示在浏览器标签页
<body>主体区域,页面可见内容都放在这里

🔶 注意<!DOCTYPE html> 不是 HTML 标签,而是告诉浏览器使用 HTML5 标准解析文档。虽然现代浏览器通常能容错,但始终应该包含它。

元素与标签#

HTML 由元素(Element)组成,元素通过标签(Tag)来定义:

<p>这是一个段落</p>
<!-- ↑ ↑ -->
<!-- 开始标签 结束标签 -->

元素的完整结构:

┌─────────── 元素 ───────────┐
│ │
│ <p class="intro">内容</p> │
│ │ └────┬────┘ │ │ │
│ │ 属性 内容 │ │
│ └── 开始标签 ───┘ │ │
│ 结束标签 │
└────────────────────────────┘

自闭合标签#

某些元素没有内容,使用自闭合标签

<br />
<!-- 换行 -->
<hr />
<!-- 水平线 -->
<img src="photo.jpg" alt="照片" />
<!-- 图片 -->
<input type="text" />
<!-- 输入框 -->

标签嵌套#

标签可以嵌套,但必须正确闭合:

<!-- ✅ 正确嵌套 -->
<p>这是<strong>重要的</strong>内容</p>
<!-- ❌ 错误嵌套 -->
<p>这是<strong>重要的</p></strong>

常用标签速览#

标题与段落#

HTML 提供 6 级标题,<h1> 最大,<h6> 最小:

<h1>一级标题(页面主标题,通常只用一次)</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<p>这是一个段落。段落之间会自动产生间距。</p>
<p>这是另一个段落。</p>

🔶 SEO 提示:每个页面应只有一个 <h1>,标题层级应按顺序使用,不要跳级(如从 h1 直接到 h3)。

文本格式化#

<strong>重要文本(语义上强调)</strong>
<em>斜体文本(语义上强调)</em>
<mark>高亮文本</mark>
<del>删除线</del>
<ins>下划线(插入内容)</ins>
<code>行内代码</code>
<pre>预格式化文本(保留空格和换行)</pre>

链接#

<!-- 基础链接 -->
<a href="https://example.com">访问示例网站</a>
<!-- 新窗口打开 -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
新窗口打开
</a>
<!-- 页内锚点 -->
<a href="#section2">跳转到第二节</a>
<h2 id="section2">第二节</h2>
<!-- 邮箱链接 -->
<a href="mailto:hello@example.com">发送邮件</a>
<!-- 电话链接 -->
<a href="tel:+8613800138000">拨打电话</a>

🔶 安全提示:使用 target="_blank" 时,始终添加 rel="noopener noreferrer" 防止安全漏洞(新页面可通过 window.opener 访问原页面)。

图片#

<img src="photo.jpg" alt="一张风景照片" width="800" height="600" />
属性必需说明
src图片路径(相对或绝对)
alt替代文本(图片无法显示时展示,SEO 重要)
width推荐图片宽度(避免布局抖动)
height推荐图片高度(避免布局抖动)

列表#

<!-- 无序列表 -->
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>橙子</li>
</ul>
<!-- 有序列表 -->
<ol>
<li>第一步:准备材料</li>
<li>第二步:开始制作</li>
<li>第三步:完成</li>
</ol>
<!-- 描述列表 -->
<dl>
<dt>HTML</dt>
<dd>超文本标记语言</dd>
<dt>CSS</dt>
<dd>层叠样式表</dd>
</dl>

表格#

<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>城市</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>25</td>
<td>北京</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
<td>上海</td>
</tr>
</tbody>
</table>

容器元素#

<!-- 块级容器 -->
<div class="container">
<p>div 是通用的块级容器</p>
</div>
<!-- 行内容器 -->
<p>这是一段文字,<span class="highlight">这部分被高亮</span>显示。</p>

注释#

HTML 注释不会显示在页面上,用于代码说明:

<!-- 这是单行注释 -->
<!--
这是多行注释
可以写很多内容
-->
<!-- TODO: 后续需要添加导航栏 -->

开发环境#

编辑器推荐#

编辑器特点
VS Code免费、插件丰富、最流行
WebStorm功能强大、付费
Sublime Text轻量快速

VS Code 推荐插件:

浏览器开发者工具#

F12 或右键”检查”打开开发者工具:

┌────────────────────────────────────────┐
│ Elements │ Console │ Network │ ... │
├────────────────────────────────────────┤
│ <html> │
│ <head>...</head> │
│ <body> │
│ <h1>标题</h1> ← 点击可高亮 │
│ <p>段落</p> 页面元素 │
│ </body> │
│ </html> │
└────────────────────────────────────────┘

🎯 实战:个人简介页面#

综合运用所学知识,创建一个个人简介页面:

<!doctype html>
<html lang="zh-Hans">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>张三的个人主页</title>
</head>
<body>
<h1>👋 你好,我是张三</h1>
<p>一名热爱技术的前端开发者,专注于构建优秀的用户体验。</p>
<h2>🛠️ 技术栈</h2>
<ul>
<li>HTML / CSS / JavaScript</li>
<li>React / Vue</li>
<li>Node.js</li>
</ul>
<h2>💼 工作经历</h2>
<table>
<thead>
<tr>
<th>公司</th>
<th>职位</th>
<th>时间</th>
</tr>
</thead>
<tbody>
<tr>
<td>ABC 科技</td>
<td>高级前端工程师</td>
<td>2022 - 至今</td>
</tr>
<tr>
<td>XYZ 互联网</td>
<td>前端工程师</td>
<td>2019 - 2022</td>
</tr>
</tbody>
</table>
<h2>📬 联系方式</h2>
<p>
邮箱:<a href="mailto:zhangsan@example.com">zhangsan@example.com</a><br />
GitHub:<a
href="https://github.com/zhangsan"
target="_blank"
rel="noopener noreferrer"
>
github.com/zhangsan
</a>
</p>
<hr />
<p><small>© 2025 张三. All rights reserved.</small></p>
</body>
</html>

将以上代码保存为 index.html,用浏览器打开即可查看效果。

常见问题#

🤔 HTML 对大小写敏感吗?#

HTML 标签不区分大小写,<P><p> 等效。但推荐使用小写,这是行业规范。

🤔 空格和换行会显示吗?#

HTML 会将多个连续空格和换行合并为一个空格。如需保留格式,使用 <pre> 标签或 CSS。

<!-- 这三行实际显示为一行 -->
<p>你好 世界</p>
<!-- 输出:你好 世界 -->

🤔 什么时候用 <div> vs 语义标签?#

优先使用语义标签(<header><nav><main> 等),只有在没有合适语义标签时才用 <div>。这对 SEO 和无障碍访问都有帮助。

参考资料#