HTML(HyperText Markup Language,超文本标记语言)是一种标记语言,它告诉 Web 浏览器如何组织你访问的网页。它可以像 Web 开发者希望的那样复杂或简单。
一个标准的 HTML 元素由三部分组成:开始标签、内容 和 结束标签。
<p>这是一段文本</p>
<p>。由元素的名称(本例中为段落的 p)包裹在开、闭角括号中组成。这个开始标签标志着元素开始或生效的位置这是一段文本。这是元素的内容。</p>。这与开始标签相同,只是在元素名称前包含一个正斜杠。这标志着元素的结束。<div>这是一个块级元素</div>
<span>这是一个行内元素</span>
<a href="https://example.com">这是一个链接</a>
/。<!-- 常见单标签 -->
<br> <!-- 换行 -->
<hr> <!-- 水平线 -->
<img src="image.jpg" alt="描述"> <!-- 图像 -->
<input type="text"> <!-- 输入框 -->
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
属性为 HTML 元素提供附加信息,总是写在开始标签中,以 名称="值" 的形式出现。
<!-- 常见属性 -->
<a href="https://www.example.com" target="_blank" id="my-link">访问示例网站</a>
<!-- 布尔属性 -->
<input type="text" disabled="disabled" />
<!-- 布尔属性 简写 -->
<input type="text" disabled />
<!-- 省略属性值周围的引号 (不建议,容易出现浏览器误解标记,渲染错误) -->
<a href=https://www.mozilla.org/>最喜欢的网站</a>
<!-- 双引号、单引号。都行,建议一个项目中统一规范选择一个引号 -->
<a href='https://www.example.com'>一个指向示例的链接。</a>
<a href="https://www.example.com">一个指向示例的链接。</a>
常见通用属性:
| 标签 | 描述 | 示例 |
|---|---|---|
<h1> - <h6> | 标题,<h1> 级别最高,<h6> 最低。每个页面使用不建议超过三个 | <h1>主标题</h1> |
<p> | 段落。 | <p>这是一个段落。</p> |
<br> | 换行。 | 第一行<br>第二行 |
<hr> | 水平分割线。 |
<hr> |
<div> | 块级容器,用于布局和分组。 | <div>这是一个区块</div> |
<span> | 行内容器,用于对文本的一部分设置样式。 | <span style="color: red;">红色文字</span> |
| 标签 | 描述 | 示例 |
|---|---|---|
<strong> | 重要的文本,加粗显示。 | <strong>重要!</strong> |
<em> | 强调的文本,斜体显示。 | <em>强调</em> |
<b> | 纯视觉上的加粗。 | <b>加粗</b> |
<i> | 纯视觉上的斜体。 | <i>斜体</i> |
<u> | 下划线文本 | <u>下划线</u> |
| 标签 | 描述 | 示例 |
|---|---|---|
<a> | 超链接。 | <a href="https://example.com">链接文字</a> |
<img> | 图像。 | <img src="pic.jpg" alt="图片描述" width="200"> |
| 标签 | 描述 | 示例 |
|---|---|---|
<ul> | 无序列表(项目符号)。 | <ul><li>咖啡</li><li>茶</li></ul> |
<ol> | 有序列表(数字编号)。 | <ol><li>第一步</li><li>第二步</li></ol> |
<li> | 列表项。 | <li>列表项内容</li> |
<table border="1">
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
<tr>
<td>张三</td>
<td>25</td>
</tr>
</table>
<table>:定义表格。<tr>:定义表格行。<th>:定义表头单元格(加粗居中)。<td>:定义标准单元格。<form action="/submit" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="username"><br><br>
<label for="email">邮箱:</label>
<input type="email" id="email" name="useremail"><br><br>
<input type="submit" value="提交">
</form>
<form>: 定义表单容器。<input>: 定义输入字段,type 属性决定其类型(文本、密码、复选框等)。<label>: 为输入字段定义标签。<textarea>: 多行文本输入框。<select>: 下拉选择列表。<button>: 按钮。所有 HTML 文档都遵循一个基本模板。下面是 HTML5 的标准结构:
<!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>这是一个标题</h1>
<p>这是一个段落。</p>
</body>
</html>
| 代码 | 说明 |
|---|---|
<!DOCTYPE html> | 文档类型声明,告诉浏览器这是一个 HTML5 文档。必须放在第一行。 |
<html lang="zh-CN"> | 根元素,包裹所有页面内容。lang 属性定义文档的语言(中文)。 |
<head> | 头部容器,包含页面的元信息,这些内容不会直接显示在网页上。 |
<meta charset="UTF-8"> | 定义文档使用 UTF-8 字符编码,确保中文等字符正确显示。 |
<meta name="viewport"...> | 视口设置,用于移动端适配,让网页在不同设备上正常显示。 |
<title>我的第一个网页</title> | 页面标题,显示在浏览器的标签页上,对 SEO 非常重要。 |
<body> | 主体容器,包含所有显示在网页上的可见内容,如文本、图片、链接等。 |
<h1>, <p> | 内容标签,分别表示一级标题和段落。 |
在 HTML 中,"空白" 指的是以下字符:
当你在 HTML 代码中敲击空格键、Tab 键或回车键时,就产生了空白字符。
<p id="noWhitespace">狗狗很 呆萌。</p>
<p id="whitespace">
狗狗很 呆萌。
</p>
在上面的例子中,你可能注意到代码中包含了很多空白。这是可选的。这两个代码片段是等效的。
核心规则:HTML 引擎在解析时,会将连续的多个空白字符(包括空格、换行、制表符)压缩为一个单一的空格。
虽然空格和不空格近似等效,但也不能乱空格/换行,要保证代码的可读性,代码风格的统一性。
在 HTML 中,某些字符具有特殊含义,比如:
如果你直接在 HTML 中使用这些字符,浏览器会误解你的意图。所以我们需要使用 字符实体。
使用易于记忆的名称来引用字符。
语法: &实体名称;
| 字符 | 实体名称 | 示例 | 输出 |
|---|---|---|---|
| < | < | 1 < 2 | 1 < 2 |
| > | > | 2 > 1 | 2 > 1 |
| & | & | A & B | A & B |
| " | " | "你好" | "你好" |
| 空格 | | Hello World | Hello World |
| © | © | © 2024 | © 2024 |
| ® | ® | 公司® | 公司® |
使用字符的 Unicode 码点来引用字符。
语法: &#数字; (十进制) 或 &#x十六进制; (十六进制)
| 字符 | 十进制 | 十六进制 | 示例 | 输出 |
|---|---|---|---|---|
| < | < | < | 1 < 2 | 1 < 2 |
| > | > | > | 2 > 1 | 2 > 1 |
| © | © | © | © 2024 | © 2024 |
| 中 | 中 | 中 | 中文 | 中文 |
| 字符 | 名称 | 实体 | 数字 | 描述 |
|---|---|---|---|---|
| < | 小于号 | < | < | 必须使用 |
| > | 大于号 | > | > | 必须使用 |
| & | 和号 | & | & | 必须使用 |
| " | 双引号 | " | " | 必须使用 |
| ' | 单引号 | ' | ' | 在单引号属性中需要 |
| 字符 | 名称 | 实体 | 效果 |
|---|---|---|---|
| 不换行空格 | | 不会被合并的空格 | |
| 半角空格 |   | 半个汉字宽度 | |
| 全角空格 |   | 一个汉字宽度 | |
| – | 短破折号 | – | – |
| —— | 长破折号 | — | —— |
| 字符 | 名称 | 实体 |
|---|---|---|
| ¥ | 人民币 | ¥ |
| $ | 美元 | $ |
| € | 欧元 | € |
| £ | 英镑 | £ |
| ¢ | 分币 | ¢ |
| 字符 | 名称 | 实体 |
|---|---|---|
| × | 乘号 | × |
| ÷ | 除号 | ÷ |
| ± | 正负号 | ± |
| ∞ | 无穷 | ∞ |
| ° | 度 | ° |
| µ | 微 | µ |
| 字符 | 名称 | 实体 | 描述 |
|---|---|---|---|
| © | 版权 | © | 版权符号 |
| ® | 注册商标 | ® | 注册商标 |
| ™ | 商标 | ™ | 商标符号 |
HTML 注释 不会在浏览器中显示,而是为开发者提供说明和笔记。
<!-- 这里是注释内容 -->
<p>这是一个段落</p>
<!--
这是一个多行注释
可以在这里写很多说明文字
比如这个页面的功能、作者、更新时间等
-->
<p>这是一个段落</p>
<p>这是一段正常文本<!-- 这里是行内注释 -->继续的文本</p>
语法规则:
<!-- 开头--> 结尾<!--
页面头部区域
作者:张三
更新时间:2024-01-15
-->
<header>
<nav><!-- 主导航菜单 --></nav>
</header>
<!-- 暂时隐藏这个广告横幅,稍后恢复 -->
<!--
<div class="ad-banner">
<img src="ad.jpg" alt="广告">
</div>
-->
<!-- 调试时注释掉有问题的代码 -->
<!-- <script src="problematic-script.js"></script> -->
<!-- ========== 产品列表开始 ========== -->
<section id="products">
<div class="product-item">产品1</div>
<div class="product-item">产品2</div>
</section>
<!-- ========== 产品列表结束 ========== -->
<!-- 主导航 -->
<nav>...</nav>
<!-- 页脚内容 -->
<footer>...</footer>
<!-- TODO: 这里需要添加搜索功能 -->
<div class="search-area">
<p>搜索功能开发中...</p>
</div>
<!-- FIXME: 图片路径需要修正 -->
<img src="temp-image.jpg" alt="临时图片">