容器"]
G --> J["
![]()
图片"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style G fill:#e8f5e8
```
让我们先添加每个 HTML 文档都需要的基础内容。
### DOCTYPE 声明和根元素
任何 HTML 文件的前两行作为对浏览器的“文档介绍”:
```html
```
**理解这段代码做了什么:**
- **声明** 文档类型为 HTML5,使用 ``
- **创建** 含有所有页面内容的根 `` 元素
- **确立** 现代网页标准,确保浏览器正确渲染
- **保证** 各种浏览器和设备上的一致显示效果
> 💡 **VS Code 提示**:在 VS Code 中将鼠标悬停于任意 HTML 标签上,可以看到来自 MDN Web Docs 的帮助信息,包括用法示例和浏览器兼容性详情。
> 📚 **了解更多**:DOCTYPE 声明确保浏览器不会进入“怪异模式”,怪异模式用于支持非常古老的网站。现代网页开发使用简单的 `` 声明以保证[标准兼容渲染](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode)。
### 🔄 **教学检查点**
**暂停并反思**:在继续之前,确保你理解了:
- ✅ 为什么每个 HTML 文档都需要 DOCTYPE 声明
- ✅ `` 根元素包含了什么
- ✅ 这种结构如何帮助浏览器正确渲染页面
**快速自测**:你能用自己的话解释“标准兼容渲染”是什么意思吗?
## 添加必要的文档元数据
HTML 文档的 `` 部分包含了浏览器和搜索引擎需要的关键信息,但访客不会直接看到它。这部分可以看作是“幕后”信息,帮助你的网页正常工作且在不同设备和平台上正确显示。
这段元数据告诉浏览器如何显示页面,使用什么字符编码,以及如何处理不同屏幕尺寸 —— 这些都是构建专业且可访问网页的重要因素。
### 任务:添加文档头部
将以下 `` 部分插入到 `` 标签的开头和结尾之间:
```html
Welcome to my Virtual Terrarium
```
**拆解每个元素的作用:**
- **设置** 在浏览器标签和搜索结果中显示的页面标题
- **指定** UTF-8 字符编码,确保文本能正确显示全球字符
- **保证** 兼容现代版本的 Internet Explorer
- **通过设置视口匹配设备宽度** 来实现响应式设计
- **控制** 页面初始缩放,保证内容按自然大小显示
> 🤔 **思考这个问题**:如果你设置了 `
` 会发生什么?页面会被强制固定为 600 像素宽,打破响应式设计!了解更多关于[正确视口配置](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag)。
## 构建文档主体
`` 元素包含网页所有的可见内容 —— 用户将看到并与之交互的一切。虽然 `` 向浏览器提供指令,`` 才是真正持有内容:文字、图片、按钮及其他创建用户界面的元素。
让我们添加主体结构,理解 HTML 标签如何协作创建有意义内容。
### 理解 HTML 标签结构
HTML 使用成对标签定义元素。大多数标签有开标签如 `
` 和闭标签如 `
`,中间包含内容:`
Hello, world!
`,表示一个包含文本“Hello, world!”的段落元素。
### 任务:添加 `` 元素
更新你的 HTML 文件,加入 `` 元素:
```html
Welcome to my Virtual Terrarium
```
**该完整结构提供了:**
- **建立** 基本的 HTML5 文档框架
- **包含** 正确渲染所必须的元数据
- **创建** 一个空白主体,为你的可见内容准备位置
- **符合** 现代网页开发的最佳实践
现在你可以开始添加玻璃植物箱的可见元素了。我们将用 `
` 元素作为容器来组织不同内容区域,并用 `
![]()
` 标签显示植物图片。
### 使用图片和布局容器
图片在 HTML 中比较特殊,因为它们使用“自闭合”标签。与像 `
` 这类包裹内容的元素不同,`
![]()
` 标签在标签内部通过属性(如 `src` 指向图片文件路径,`alt` 用于无障碍访问)包含了所需全部信息。
添加图片前,你需要通过创建图片文件夹并添加植物图形来合理组织项目文件。
**首先,设置你的图片:**
1. 在玻璃植物箱项目文件夹中创建一个名为 `images` 的文件夹
2. 从 [solution folder](../../../../3-terrarium/solution/images) 下载植物图片(共14张)
3. 将所有植物图片复制到你的新 `images` 文件夹中
### 任务:创建植物展示布局
现在,在你的 `` 标签之间,添加组织成两列的植物图片:
```html
```
**这段代码的步骤说明如下:**
- **创建** 一个主页面容器,`id="page"`,用于包含所有内容
- **建立** 两个列容器:`left-container` 和 `right-container`
- **将** 7 株植物放入左列,7 株放入右列
- **用** `plant-holder` div 包裹每株植物图片,方便单独定位
- **应用** 一致的类名,方便下一课中 CSS 样式设定
- **为** 每个植物图片分配唯一 ID,便于后续 JavaScript 操作
- **包含** 指向 images 文件夹的正确文件路径
> 🤔 **考虑这个问题**:注意所有图片的 alt 属性都写成了“plant”,这不利于无障碍访问。屏幕阅读器会连续读取14次“plant”,用户无法区分每张图片具体是哪株植物。你能想到更合适、描述更准确的 alt 文本吗?
> 📝 **HTML 元素类型**:`
` 是“块级元素”,占满整行宽度;`
` 是“内联元素”,只占内容所需宽度。如果把这些 `` 标签全部换成 `
` 会怎样?
### 🔄 **教学检查点**
**结构理解**:花点时间回顾你的 HTML 结构:
- ✅ 你能识别布局中的主要容器吗?
- ✅ 你理解为什么每张图片都需要唯一 ID?
- ✅ 你会怎么描述 `plant-holder` div 的作用?
**视觉检查**:在浏览器中打开你的 HTML 文件。你应该能看到:
- 一个基础的植物图片列表
- 图片分成两列排列
- 简单且未加样式的布局
**记住**:这种朴素的外观正是 CSS 添加样式前 HTML 应有的样子!
有了这些标记,植物将出现在屏幕上,虽然还没有美观的样式 —— 那正是下一课 CSS 的作用!现在你有了坚实的 HTML 基础,内容被正确组织且符合无障碍最佳实践。
## 使用语义 HTML 提升无障碍性
语义 HTML 指的是根据内容的意义和用途选择 HTML 元素,而不是仅仅根据外观使用。当你使用语义标记时,就在向浏览器、搜索引擎和辅助技术(如屏幕阅读器)传达内容的结构和意义。
```mermaid
flowchart TD
A[需要添加内容?] --> B{类型?}
B -->|主标题| C[""]
B -->|副标题| D[", 等"]
B -->|段落| E["
"]
B -->|列表| F["
, "]
B -->|导航| G["