HTML — CodeRoadMapHTML
这一课你将能做到
- 写出合法的 HTML 文档结构(doctype、head、body)
- 使用语义化标签组织页面内容
- 理解 HTML 与 CSS、JavaScript 的分工
为什么要学
HTML 是网页的骨架。你访问的每个网站,背后都是 HTML 在描述「这里有一个标题」「这里有一个按钮」。初学者常以为 HTML 就是「写网页」,其实它只负责结构,样式靠 CSS,交互靠 JavaScript。
人话:HTML 是「搭积木的说明书」,告诉浏览器每个部分是什么。
先建立图像
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的第一个页面</title>
</head>
<body>
<h1>这是标题</h1>
<p>这是段落。</p>
</body>
</html>
浏览器解析后:
<html> 根元素
└── <head> 元信息(不显示)
│ └── <title> 页签标题
└── <body> 可见内容
├── <h1> 大标题
└── <p> 段落文字
跟着做
步骤 1:创建第一个 HTML 文件
新建文件 index.html,写入:
<!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>CodeRoadMap</h1>
<nav>
<a href="/courses">课程</a>
<a href="/practice">刷题</a>
</nav>
</header>
<main>
<article>
<h2>Java 语言基础</h2>
<p>入门精讲:语法、OOP、集合与异常。</p>
<ul>
<li>数组</li>
<li>集合</li>
<li>异常</li>
</ul>
</article>
</main>
</body>
</html>
双击用浏览器打开,看到标题和列表。
步骤 2:理解核心标签
| 标签 | 作用 | 示例 |
|---|
<h1> ~ <h6> | 标题,从大到小 | <h1>主标题</h1> |
<p> | 段落 | <p>正文</p> |
<a> | 链接 | <a href="https://...">点我</a> |
<ul> + <li> | 无序列表 | 见上 |
<ol> + <li> | 有序列表 | <ol><li>第一项</li></ol> |
<img> | 图片 | <img src="logo.png" alt="Logo"> |
<div> |
步骤 3:语义化标签(重要)
<!-- 不推荐:全是 div -->
<div class="header">
<div class="nav">...</div>
</div>
<div class="main">
<div class="article">...</div>
</div>
<!-- 推荐:语义化 -->
<header>
<nav>...</nav>
</header>
<main>
<article>...</article>
</main>
语义化标签帮助搜索引擎理解页面结构,也利于屏幕阅读器。
步骤 4:表单(后端交互入口)
<form action="/login" method="POST">
<label for="username">用户名</label>
<input type="text" id="username" name="username" required>
<label for="password">密码</label>
<input type="password" id="password" name="password" required>
<button type="submit">登录</button>
</form>
action 是提交地址,method 是 HTTP 方法,name 是后端接收的参数名。
步骤 5:引入 CSS 和 JavaScript
<head>
<!-- 内联样式 -->
<style>
body { font-family: sans-serif; }
</style>
<!-- 外部 CSS -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 内联脚本 -->
<script>
console.log('Hello');
</script>
<!-- 外部 JS -->
<script src="app.js"></script>
</body>
讲清楚要点
- HTML 是标记语言,不是编程语言:没有逻辑,只有结构描述。
- 标签必须闭合:
<p>...</p> 或 <img />(自闭合)。
- 属性提供额外信息:
href、src、id、class、name。
- 嵌套必须正确:
<p><strong>文字</strong></p> 对,<p><strong>文字</p></strong> 错。
- 语义化提升可维护性:
<header>、<main>、<footer> 比一堆 <div> 清晰。
你可能会懵的地方
-
HTML5 和 HTML 有什么区别?
HTML5 是最新版本,新增 <header>、<article>、<video> 等标签。平时说的 HTML 就是 HTML5。
-
<div> 和 <span> 什么时候用?
<div> 是块级(独占一行),<span> 是行内(不换行)。无语义时优先用 <div> 分组。
-
id 和 class 的区别?
id 唯一,一个页面只能有一个 id="username";class 可复用,多个元素可以有同一个 class="btn"。
-
自闭合标签必须写 / 吗?
HTML5 中 <img src="..."> 和 <img src="..." /> 都合法,但建议统一写 / 更清晰。
-
表单提交后页面跳转?
默认会跳转。用 JavaScript 的 event.preventDefault() 阻止,实现 Ajax 提交。
错法对照
| 错法 | 问题 | 正解 |
|---|
<p>文字 没闭合 | 浏览器可能自动补,但不规范 | <p>文字</p> |
<img src="logo.png"> 没写 alt | 图片加载失败时无提示 | <img src="logo.png" alt="Logo"> |
用 <div> 包一切 | 语义缺失,SEO 差 | 用 <header>、<main>、<article> |
<input type="text" name="user"> | 后端接收不到参数 | 确保 name 属性正确 |
在 <head> 里写可见内容 | 不显示 | 可见内容放 <body> |
卡点急救
- 页面空白:检查
</html> 是否闭合,标签是否嵌套正确。
- 中文乱码:确认
<meta charset="UTF-8"> 在 <head> 最前面。
- 图片不显示:检查
src 路径是否正确,相对路径 ./images/logo.png 还是绝对路径 /images/logo.png。
面试常问
-
HTML5 新特性?
语义化标签(<header>、<article>)、表单增强(type="email")、多媒体(<video>、<audio>)、Canvas、本地存储(localStorage)。
-
块级元素和行内元素区别?
块级独占一行,可设置宽高;行内不换行,宽高由内容决定。<div> 是块级,<span> 是行内。
-
语义化的意义?
SEO 友好、可访问性(屏幕阅读器)、代码可读性。
自测三问
- HTML 文档的基本结构是什么?
<div> 和 <article> 的区别?
- 表单中
name 属性的作用?
小结一句话
HTML 是网页的骨架,用标签描述结构;语义化标签让代码更清晰,表单是前后端交互的入口。
延伸