容器"]
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 宣告能防止瀏覽器進入「怪異模式」(quirks mode),該模式是為了支援非常古老的網站。現代網頁開發使用簡單的 `` 宣告來確保[符合標準的呈現](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode)。
### 🔄 **教學檢視點**
**暫停思考**:繼續之前,請確保你理解:
- ✅ 為什麼每個 HTML 文件需要 DOCTYPE 宣告
- ✅ `` 根元素包含什麼
- ✅ 這種結構如何幫助瀏覽器正確呈現頁面
**快速自我檢測**:你能用自己的話說明「符合標準的呈現」是什麼意思嗎?
## 新增必要的文件 Metadata
HTML 文件的 `` 部分包含瀏覽器和搜尋引擎需要的重要資訊,但訪客不會直接在頁面上看到。可以把它想成「幕後」資料,幫助你的網頁運作正常,並在不同裝置和平台上正確顯示。
這些 Metadata 告訴瀏覽器如何呈現頁面、要使用哪種字元編碼、以及如何處理不同螢幕尺寸——這些都是打造專業且無障礙網頁的關鍵。
### 任務:新增文件 Head
在你的 `` 開始和結束標籤之間,插入這段 ``:
```html
Welcome to my Virtual Terrarium
```
**解釋每個元素的作用:**
- **設定** 頁面標題,會顯示在瀏覽器分頁標籤和搜尋結果中
- **指定** UTF-8 字元編碼,確保文字在全球各地正確顯示
- **確保** 支援現代版 Internet Explorer
- **設定** 響應式設計的 viewport,符合裝置寬度
- **控制** 初始縮放比例,使內容以自然大小呈現
> 🤔 **思考**:如果你設定一個 viewport meta 標籤像 `
`,會發生什麼事?這會強制頁面寬度永遠是 600 像素,破壞響應式設計!想了解更多關於[正確設定 viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag)的內容。
## 建立文件主體
`` 元素包含所有你網頁中可見的內容——使用者會看到和互動的所有東西。雖然 `` 是給瀏覽器的指令,`` 是實際內容:文字、圖片、按鈕和其他組成使用者介面的元素。
讓我們加上 `body` 結構,並了解 HTML 標籤如何合作,創造有意義的內容。
### 理解 HTML 標籤結構
HTML 使用成對標籤來定義元素。大部分標籤有開始標籤例如 `
`,和結束標籤例如 `
`,中間夾帶內容:`
Hello, world!
`。這會建立一個包含「Hello, world!」文字的段落元素。
### 任務:新增 Body 元素
更新你的 HTML 檔案,加入 `` 元素:
```html
Welcome to my Virtual Terrarium
```
**完整結構提供:**
- **建立** 基本的 HTML5 文件框架
- **包含** 必要的 Metadata 以供瀏覽器正確呈現
- **創造** 空白的 body 以容納可見內容
- **採用** 現代網頁開發最佳實務
現在,你準備好加入玻璃花房的可見元素了。我們將使用 `
` 元素作為容器,組織不同區塊的內容,並使用 `
![]()
` 元素來顯示植物圖片。
### 操作圖片與版面容器
圖片在 HTML 中是特別的,使用「自我封閉」標籤。與像 `
` 這類包裹內容的元素不同,`
![]()
` 標籤本身帶有所需的所有資訊,用屬性如 `src` 指定圖片路徑,`alt` 屬性做無障礙使用說明。
在加入圖片到 HTML 之前,你需要先透過建立 images 資料夾並放入植物圖像,整理專案檔案。
**首先,準備你的圖片:**
1. 在你的玻璃花房專案資料夾中建立一個叫 `images` 的資料夾
2. 從[解答資料夾](../../../../3-terrarium/solution/images)下載植物圖片(共 14 張)
3. 將所有植物圖片複製到你新建立的 `images` 資料夾
### 任務:建立植物顯示版面
現在在你的 `` 標籤之間,加入兩欄排列的植物圖片:
```html
```
**一步步來看這段程式碼的作用:**
- **建立** 一個主頁面容器,`id="page"`,包裹所有內容
- **設置** 兩個欄位容器:`left-container` 和 `right-container`
- **將 7 個植物放在左欄,7 個植物放在右欄**
- **將每張植物圖片放入 `plant-holder` div 以便個別定位**
- **套用一致的 class 名稱,方便下一課的 CSS 樣式設計**
- **為每張植物圖片指定獨特的 ID,方便日後 JavaScript 互動**
- **正確指向 images 資料夾中的檔案路徑**
> 🤔 **思考**:你會注意到所有圖片的 alt 屬性都是「plant」,這對無障礙使用不是理想的做法。螢幕閱讀器使用者會聽到「plant」重複 14 次,卻不知道每張圖片是什麼特定植物。你能想出更好、更加描述性的 alt 文字嗎?
> 📝 **HTML 元素類型**:`
` 元素屬於「區塊級」元素,佔滿整行寬度,而 `
` 是「內嵌」元素,只佔必要寬度。你覺得如果將這些 `` 改成 `
` 會發生什麼事?
### 🔄 **教學檢視點**
**結構理解**:花點時間檢視你的 HTML 結構:
- ✅ 你能辨識版面中的主要容器嗎?
- ✅ 是否理解為什麼每張圖片需要獨特的 ID?
- ✅ 你會如何描述 `plant-holder` div 的用途?
**視覺檢查**:開啟你的 HTML 檔案於瀏覽器中,你應該會看到:
- 簡單的植物圖片清單
- 兩欄排列顯示圖片
- 簡約,未經樣式設計的版面
**請記得**:這種樸素外觀正是 HTML 在加入 CSS 樣式前應該的樣子!
加入這些標記後,植物會呈現在螢幕上,雖然還未經修飾,這正是下一課 CSS 將要處理的。現在你擁有堅實的 HTML 基礎,正確組織內容並符合無障礙最佳實務。
## 使用語義化 HTML 提升無障礙
語義化 HTML 是根據元素的意義和用途挑選 HTML 標籤,而不只是依外觀。當你選用語義化標記時,你是在向瀏覽器、搜尋引擎和輔助技術(例如螢幕閱讀器)傳達內容的結構與意涵。
```mermaid
flowchart TD
A[需要加入內容嗎?] --> B{什麼類型?}
B -->|主標題| C[""]
B -->|副標題| D[", , 等等"]
B -->|段落| E["
"]
B -->|清單| F["
, "]
B -->|導覽| G["