
基于 Trip.com Group (携程集团) 前端训练营资料整理,适用对象:前端初学者、需要巩固 HTML5 基础的开发者
HTML(超文本标记语言)往往被认为是 Web 开发中最简单的部分,很多人认为“两三天就能学会”。但正如冰山理论所示,入门虽易,精通却难。HTML 涉及 Web 交互、SEO(搜索引擎优化)、安全、无障碍访问(A11y)等多个领域。
本文将梳理 HTML 的核心演进、关键元素、语义化结构以及表单交互,帮助你建立正确且专业的 HTML 认知体系。
01. Web 技术三大基石
在深入 HTML 之前,我们需要明确它在 Web 技术栈中的定位:
| 技术 |
角色 |
比喻 |
| HTML |
结构骨架 |
人的骨骼,支撑起整个身体 |
| CSS |
视觉表现 |
人的皮肤和衣服,决定外观是否美观 |
| JavaScript |
行为交互 |
人的肌肉和神经,赋予页面动作和生命力 |
虽然 HTML 运行门槛低(改个后缀名就能跑),但要写出健壮、可维护、对机器(搜索引擎/屏幕阅读器)友好的代码,需要深厚的功底。
02. HTML 的演进:从 4.01 到 HTML5
HTML5 不仅仅是一个版本的更新,它是 Web 标准的现代化革命。
HTML4 vs HTML5 核心对比
| 比较维度 |
HTML4 |
HTML5 |
| 文档声明 |
复杂的 SGML 声明 |
简洁的 <!DOCTYPE html> |
| 语义化 |
依赖 <div id="header"> 等 |
原生标签 <header>, <article>, <nav> |
| 多媒体 |
需 Flash 等插件 |
原生支持 <audio>, <video> |
| 图形 |
依赖插件 |
原生支持 <canvas>, SVG |
| 存储 |
Cookie (容量小) |
LocalStorage, SessionStorage (大容量) |
| 通信 |
传统的 XHR |
WebSocket, Server-Sent Events |
| 移动端 |
支持有限 |
原生视口控制 <meta name="viewport"> |
03. HTML 基础与常见元素
3.1 元素分类
理解元素的默认表现是布局的基础:
- 块级元素 (Block-level)
1 2 3
| 特点:独占一行,宽度默认撑满父容器。 常见:`<div>`, `<p>`, `<h1>`~`<h6>`, `<ul>`, `<table>` HTML5 新增:`<header>`, `<footer>`, `<section>`,` <article> `
|
1 2 3 4 5 6
| <div style="border: 1px solid blue;"> <h1>我是标题,独占一行</h1> <p>我是段落,我也独占一行,并且上下有默认间距。</p> <div>我是通用的块级容器。</div> </div>
|
- 行内元素 (Inline-level)
1 2
| 特点:不换行,宽度随内容变化,不可设置宽高(除非转为 inline-block)。 常见:`<span>`,` <a>`,` <em>`, `<strong>`, `<img>`
|
1 2 3 4 5
| <p> 这是一段文本,其中包含 <span style="color: red;">span元素</span>, 以及一个 <a href="#">链接</a>。它们都在同一行内。 </p>
|
3.2 避坑指南:已废弃或不建议使用的元素
为了保持代码的语义化和样式分离,以下标签不要再使用了。
不推荐样式类(请用 CSS 代替)
<font>: 字体样式
<center>: 居中
<big>, <basefont>
1 2 3 4 5 6 7
|
<center><font color="red">警告信息</font></center>
<div style="text-align: center; color: red;">警告信息</div>
|
不推荐交互/特效类(请用 CSS / JS 代替)
1 2 3 4 5
| <marquee>滚动消息</marquee>
<div class="scrolling-text">滚动消息</div>
|
需注意表现类<b>, <i>: 纯粹的加粗和斜体。推荐使用 <strong>(强调重要性)和 <em>(强调语气),因为后者具有语义。
1 2 3 4 5
| <b>关键词</b>
<strong>重要警告</strong>
|
3.3 图片与路径
alt 属性:必填!当图片无法加载时显示文本,且对屏幕阅读器和 SEO 至关重要。
1 2 3 4 5 6 7 8
| <img src="./images/logo.png" alt="公司 Logo - 首页跳转" />
<img src="[https://www.ctrip.com/header-logo.png](https://www.ctrip.com/header-logo.png)" alt="携程旅行网" />
|
04. HTML5 结构与语义化
为什么要语义化?
- 可读性:代码结构清晰,开发者一眼能看懂布局。
- SEO:搜索引擎能区分什么是“正文”,什么是“导航”,权重不同。
- 无障碍性 (A11y):屏幕阅读器通过 AOM (Accessibility Object Model) 解析语义,帮助视障用户快速跳转到主要内容。
语义化布局示例
错误示范:无语义代码 (Div Soup)
1 2 3 4 5 6
| <div class="header">标题</div> <div class="nav">导航</div> <div class="main"> <div class="article">内容</div> </div> <div class="footer">底部</div>
|
推荐做法:语义化代码
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
| <header> <h1>携程技术博客</h1> <nav> <ul> <li><a href="#home">首页</a></li> <li><a href="#about">关于我们</a></li> </ul> </nav> </header>
<main> <article> <header> <h2>HTML5 深度解析</h2> <p>发布日期:2025-10-01</p> </header> <section> <h3>第一章:语义化的意义</h3> <p>语义化让代码更易读...</p> </section> </article>
<aside> <h3>相关推荐</h3> <ul> <li><a href="#">CSS3 新特性</a></li> </ul> </aside> </main>
<footer> <p>© 2025 Trip.com Group. All rights reserved.</p> </footer>
|
表单是用户与后端交互的核心入口,使用正确的 type 可以唤起移动端特定的键盘,提升体验。
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 36 37 38
| <form action="/api/submit" method="POST" enctype="multipart/form-data"> <label for="username">用户名:</label> <input type="text" id="username" name="username" placeholder="请输入用户名" required> <br><br>
<label for="email">邮箱:</label> <input type="email" id="email" name="email" required> <br><br>
<label for="age">年龄:</label> <input type="number" id="age" name="age" min="18" max="100"> <br><br>
<label for="code">邀请码 (3位字母):</label> <input type="text" id="code" name="code" pattern="[A-Za-z]{3}" title="请输入3个字母"> <br><br>
<label for="birthdate">生日:</label> <input type="date" id="birthdate" name="birthdate"> <br><br>
<label>只读字段 (会提交):</label> <input type="text" value="不可修的数据" readonly name="readonly_data"> <br> <label>禁用字段 (不会提交):</label> <input type="text" value="未启用" disabled name="disabled_data"> <br><br>
<button type="submit">注册</button> </form>
|
- 使用
<label>:上面代码中 for="username" 与 input 的 id="username" 具有对应关系。这使得点击“用户名:”文字时,光标会自动聚焦到输入框内。
- 回车提交:在
<form> 标签内,只要有一个 type="submit" 的按钮,用户在输入框内按回车键即可自动提交表单,这是原生 HTML 的优势。
06. 其他重要特性
6.1 SVG (可缩放矢量图形)
特点:基于 XML,无限放大不失真,文件体积小。
代码实现:(直接在 HTML 中绘制一个红色的圆)
1 2 3
| <svg width="100" height="100"> <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /> </svg>
|
6.2 LocalStorage (本地存储)
相比 Cookie,LocalStorage 是更现代的客户端存储方案(容量约 5MB,永久保存直到手动清除)。
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
| <button onclick="saveData()">保存数据</button> <button onclick="readData()">读取数据</button> <div id="output"></div>
<script> function saveData() { localStorage.setItem("username", "CtripUser"); alert("数据已保存!"); }
function readData() { const user = localStorage.getItem("username"); const outputDiv = document.getElementById("output"); if (user) { outputDiv.innerText = "当前用户: " + user; } else { outputDiv.innerText = "没有找到数据。"; } }
</script>
|
总结
HTML 并不只是简单的标签堆砌。写出结构良好、语义清晰、兼容性强的 HTML 代码,是成为一名优秀前端工程师的第一步。无论是为了 SEO 排名,还是为了让视障人士能平等地访问互联网,掌握 HTML5 的核心特性都是至关重要的。
小练习建议:尝试不使用任何 CSS,仅用 HTML5 语义化标签,还原一个类似“携程口碑榜”或“新闻详情页”的结构,确保在没有样式的情况下,页面依然逻辑清晰、可读。
学习资料
HTML(超文本标记语言) | MDN
分类:开发者手册 - 阮一峰的网络日志
HTML Tutorial
HTML | web.dev