# HTML 入門完全指南 - 選擇題題庫總整
本文件彙整了書中各章節的所有練習題,方便讀者統一複習與自我檢測。
**題庫特色:**
- ✅ 收錄全書所有章節的課後習題
- ✅ 總計 60 題
- ✅ 包含基礎題與綜合應用題 (含進階挑戰)
- ✅ 附有詳細解析
---
## 目錄
- [前言與環境介紹](#前言與環境介紹)
- [第一章:基礎概念與語法入門](#第一章:基礎概念與語法入門)
- [第二章:HTML 的內容結構](#第二章:html-的內容結構)
- [第三章:語意化與進階應用](#第三章:語意化與進階應用)
- [第四章:CSS 與 JavaScript 整合入門](#第四章:css-與-javascript-整合入門)
- [第五章:AI 輔助開發與學習](#第五章:ai-輔助開發與學習)
## 前言與環境介紹
**1. 網站開發的三大基礎語言是什麼?**
- A) HTML、Python、Java
- B) HTML、CSS、JavaScript
- C) CSS、PHP、MySQL
- D) JavaScript、Ruby、C++
<details>
<summary>點選查看答案</summary>
答案: B) HTML、CSS、JavaScript
</details>
---
**2. 下列對 HTML、CSS、JavaScript 的描述,何者正確?**
- A) HTML 負責外觀,CSS 負責結構,JavaScript 負責互動
- B) HTML 負責結構,CSS 負責外觀,JavaScript 負責互動
- C) HTML 負責互動,CSS 負責結構,JavaScript 負責外觀
- D) 三者功能完全相同,可互相替代
<details>
<summary>點選查看答案</summary>
答案: B) HTML 負責結構,CSS 負責外觀,JavaScript 負責互動
</details>
---
**3. 推薦新手使用哪個文字編輯器來撰寫 HTML?**
- A) Microsoft Word
- B) 記事本
- C) Visual Studio Code
- D) Excel
<details>
<summary>點選查看答案</summary>
答案: C) Visual Studio Code
</details>
---
**4. Live Server 外掛的主要功能是什麼?**
- A) 壓縮圖片
- B) 即時預覽網頁,自動重新整理
- C) 修正語法錯誤
- D) 美化程式碼
<details>
<summary>點選查看答案</summary>
答案: B) 即時預覽網頁,自動重新整理
</details>
---
**5. 如何在 VS Code 中的 html 檔案中,快速建立 HTML5 基礎範本?**
- A) 輸入 html 後按 Enter
- B) 輸入 ! 後按 Enter
- C) 輸入 template 後按 Enter
- D) 直接開始寫 `<html>` 標籤
<details>
<summary>點選查看答案</summary>
答案: B) 輸入 ! 後按 Enter
</details>
---
**6. 瀏覽器的開發者工具可以用來做什麼?**
- A) 編寫 Word 文件
- B) 檢查網頁結構與除錯
- C) 下載影片
- D) 編輯圖片
<details>
<summary>點選查看答案</summary>
答案: B) 檢查網頁結構與除錯
</details>
---
**7. DOM 的全名是什麼?**
- A) Data Object Model
- B) Document Object Model
- C) Dynamic Object Model
- D) Design Object Model
<details>
<summary>點選查看答案</summary>
答案: B) Document Object Model
</details>
## 第一章:基礎概念與語法入門
**1. 下列何者是 HTML 的完整名稱?**
- A) HyperText Making Language
- B) HyperText Markup Language
- C) HighText Markup Language
- D) HyperTool Markup Language
<details>
<summary>點選查看答案</summary>
答案: B) HyperText Markup Language
</details>
**2. HTML 文件中,哪個區塊負責放置實際顯示在畫面的內容?**
- A) `<head>`
- B) `<body>`
- C) `<html>`
- D) `<meta>`
<details>
<summary>點選查看答案</summary>
答案: B) `<body>`
</details>
**3. 下列哪個標籤用於定義最高層級的標題?**
- A) `<h6>`
- B) `<h3>`
- C) `<h1>`
- D) `<title>`
<details>
<summary>點選查看答案</summary>
答案: C)
`<h1>`
</details>
**4. `<!DOCTYPE html>` 的作用是什麼?**
- A) 定義網頁的標題
- B) 告訴瀏覽器這是 HTML5 文件
- C) 設定文字編碼
- D) 建立段落
<details>
<summary>點選查看答案</summary>
答案: B) 告訴瀏覽器這是 HTML5 文件
</details>
**5. 下列哪個標籤具有語意上的「重要強調」意義?**
- A) `<b>`
- B) `<i>`
- C) `<strong>`
- D) `<u>`
<details>
<summary>點選查看答案</summary>
答案: (C)
</details>
**6. 若要在同一段落內換行,應該使用哪個標籤?**
- A) `<p>`
- B) `<br>`
- C) `<hr>`
- D) `<div>`
<details>
<summary>點選查看答案</summary>
答案: B)
</details>
**7. `<meta charset="UTF-8">` 的主要功能是什麼?**
- A) 設定網頁標題
- B) 避免中文亂碼
- C) 建立超連結
- D) 定義網頁描述
<details>
<summary>點選查看答案</summary>
答案: B) 避免中文亂碼
</details>
### 綜合應用題
**8. 小華寫了以下程式碼,但瀏覽器顯示時標題與段落沒有分開,而是連在一起。最可能的原因是什麼?**
```html
<h1>我的網站<h1>
<p>歡迎來到我的網站</p>
```
- A) 缺少 `<!DOCTYPE html>`
- B) 第一個 `<h1>` 的結束標籤錯誤,應為 `</h1>`
- C) 段落標籤應該用 `<div>` 取代
- D) 缺少 `<meta>` 標籤
<details>
<summary>點選查看答案</summary>
答案: B)
**解析:**
結束標籤必須使用斜線 `/`,寫成 `<h1>` 會被瀏覽器視為另一個開始標籤,導致第二個 `<h1>` 與 `<p>` 都被包在第一個 `<h1>` 內部,造成顯示異常。
</details>
**9. 下列哪一組標籤的組合使用方式正確?**
- A) `<strong><em>重要且強調</strong></em>`
- B) `<p>段落文字<h1>標題</h1></p>`
- C) `<em>強調文字 <strong>重要文字</strong></em>`
- D) `<body><head><title>標題</title></head></body>`
<details>
<summary>點選查看答案</summary>
答案: C) `<em>強調文字 <strong>重要文字</strong></em>`
**解析:**
- A) 錯誤:標籤巢狀順序錯誤,應該是 `</em></strong>` 而非 `</strong></em>`
- B) 錯誤:`<h1>` 是區塊元素,不應放在 `<p>` 段落內部
- C) 正確:標籤正確巢狀,先開的後關
- D) 錯誤:`<head>` 必須在 `<body>` 之前
</details>
**10. 若要建立一個包含作者資訊的網頁,下列哪個結構最符合 HTML 語意?**
- A) `<p>作者:<b>張小明</b></p>`
- B) `<div>作者:<span>張小明</span></div>`
- C) `<p>作者:<strong>張小明</strong></p>`
- D) `<abbr>作者:張小明</abbr>`
<details>
<summary>點選查看答案</summary>
答案: C) `<p>作者:<strong>張小明</strong></p>`
**解析:**
- A) `<b>` 只是視覺上的粗體,沒有語意
- B) `<div>` 和 `<span>` 是通用容器,缺乏語意
- C) 最佳選擇:`<p>` 表示段落,`<strong>` 表示重要強調(作者名字確實是重要資訊)
- D) `<abbr>` 是用於縮寫,不適合此情境
</details>
**11. 在 HTML 文件中,下列哪些內容應該放在 `<head>;` 區塊而非 `<body>;` 區塊?**
- A) `<title>;` 和 `<h1>;`
- B) `<meta charset>;` 和 `<p>;`
- C) `<title>;` 和 `<meta name="description">;`
- D) `<h1>;` 和 `<meta charset>;`
<details>
<summary>點選查看答案</summary>
答案: C)
</details>
**12. 下列關於 HTML 標籤使用的敘述,何者正確?**
- A) 所有標籤都必須成對出現(有開始和結束標籤)
- B) `<br>` 和 `<hr>` 是自閉合標籤,不需要結束標籤
- C) 標籤名稱有區分大小寫,`<P>` 和 `<p>` 是不同的標籤
- D) HTML 標籤可以任意巢狀,沒有順序限制
<details>
<summary>點選查看答案</summary>
答案: B) `<br>` 和 `<hr>` 是自閉合標籤,不需要結束標籤
**解析:**
- A) 錯誤:部分標籤是自閉合的,如 `<br>`、`<hr>`、`<img>`、`<input>` 等
- B) 正確:自閉合標籤(self-closing tags)不需要結束標籤
- C) 錯誤:HTML 標籤不區分大小寫,但建議統一使用小寫
- D) 錯誤:標籤巢狀有規則,例如不能在 `<p>` 內放 `<h1>`,先開的標籤要後關
</details>
**13. 完整的 HTML5 文件結構中,`<meta charset="UTF-8">` 應該放在哪個區塊?**
- A) `<body>`
- B) `<head>`
- C) `<html>`
- D) `<footer>`
<details>
<summary>點選查看答案</summary>
答案: B) `<head>`
解析:字元編碼設定應該放在 `<head>` 區塊中,這樣瀏覽器才能正確解析文件內容,避免出現亂碼。
</details>
## 第二章:HTML 的內容結構
**1. 下列何者是建立超連結的正確語法?**
- A) `<link href="page.html">點我</link>`
- B) `<a href="page.html">點我</a>`
- C) `<url src="page.html">點我</url>`
- D) `<hyperlink to="page.html">點我</hyperlink>`
<details>
<summary>點選查看答案</summary>
答案: B) `<a href="page.html">點我</a>`
</details>
**2. 若要讓超連結在新分頁開啟,應使用哪個屬性?**
- A) `new="true"`
- B) `target="_blank"`
- C) `window="new"`
- D) `open="tab"`
<details>
<summary>點選查看答案</summary>
答案: B) `target="_blank"`
</details>
**3. 下列哪個標籤用於建立無序清單?**
- A) `<ol>`
- B) `<ul>`
- C) `<list>`
- D) `<menu>`
<details>
<summary>點選查看答案</summary>
答案: B) `<ul>`
</details>
**4. `<img>` 標籤中,哪個屬性用於描述圖片內容(對視障人士重要)?**
- A) `title`
- B) `description`
- C) `alt`
- D) `caption`
<details>
<summary>點選查看答案</summary>
答案: C) `alt`
</details>
**5. 在表格中,下列哪個標籤用於定義標題欄位(通常是粗體)?**
- A) `<td>`
- B) `<th>`
- C) `<tr>`
- D) `<thead>`
<details>
<summary>點選查看答案</summary>
答案: B) `<th>`
</details>
**6. 若要合併表格的兩個欄位,應使用哪個屬性?**
- A) `merge="2"`
- B) `span="2"`
- C) `colspan="2"`
- D) `columns="2"`
<details>
<summary>點選查看答案</summary>
答案: C) `colspan="2"`
</details>
**7. 表單中,下列哪種 input type 會隱藏輸入的內容?**
- A) `type="text"`
- B) `type="hidden"`
- C) `type="password"`
- D) `type="secret"`
<details>
<summary>點選查看答案</summary>
答案: C) `type="password"`
</details>
---
#### 綜合應用題
**8. 小明想建立一個點擊圖片就能跳轉到關於我們頁面的功能,下列哪個寫法正確?**
- A) `<img src="logo.png" href="about.html" alt="關於我們" />`
- B) `<a href="about.html"><img src="logo.png" alt="關於我們" /></a>`
- C) `<img><a href="about.html" src="logo.png">關於我們</a></img>`
- D) `<link href="about.html"><img src="logo.png" /></link>`
<details>
<summary>點選查看答案</summary>
答案: B)`
**解析:**
- A) 錯誤:`<img>` 標籤沒有 `href` 屬性
- B) 正確:將 `<img>` 放在 `<a>` 標籤內部,整個圖片就變成可點擊的連結
- C) 錯誤:`<img>` 是自閉合標籤,不能包含其他標籤;且 `src` 屬性應在 `<img>` 上
- D) 錯誤:`<link>` 是用於引入外部資源(如 CSS),不是超連結標籤
</details>
**9. 下列關於表格結構的敘述,何者正確?**
- A) `<table>` 內可以直接放 `<td>`,不需要 `<tr>`
- B) `<th>` 只能用在表格的第一行
- C) 一個 `<tr>` 可以同時包含 `<th>` 和 `<td>`
- D) `<thead>`、`<tbody>`、`<tfoot>` 必須全部都使用,不能只用其中一個
<details>
<summary>點選查看答案</summary>
答案: C) 一個 `<tr>` 可以同時包含 `<th>` 和 `<td>`
**解析:**
- A) 錯誤:`<td>` 必須放在 `<tr>` 內,表示「這個儲存格屬於哪一列」
- B) 錯誤:`<th>` 可以用在任何位置,既可以是欄位標題(第一行),也可以是列標題(第一欄)
- C) 正確:例如第一欄用 `<th>` 作為列標題,其他欄位用 `<td>` 放資料
- D) 錯誤:這些標籤是選用的,可以只使用其中部分或完全不使用
</details>
**10. 若要建立一個註冊表單,包含帳號、密碼、Email、送出按鈕,下列哪個結構最完整且符合最佳實務?**
- A) `<form><input type="text" placeholder="帳號">...</form>`
- B) `<form action="/register" method="post"><label for="username">帳號:</label>...</form>`
- C) `<div><input type="text">帳號...</div>`
- D) `<form>帳號:<input type="text"><br>...</form>`
<details>
<summary>點選查看答案</summary>
答案: B)
**解析:**
選項 B 最完整且符合最佳實務,原因:
1. ✅ 使用 `<form>` 標籤並設定 `action` 與 `method` 屬性。
2. ✅ 每個輸入欄位都有對應的 `<label>`,並透過 `for` 與 `id` 正確連結,提升可及性。
3. ✅ 每個 `input` 都有 `name` 屬性,確保資料能被後端接收。
4. ✅ 使用 `required` 屬性進行前端必填驗證。
5. ✅ 按鈕明確指定 `type="submit"`。
</details>
**11. 下列關於清單與連結的組合使用,何者最符合語意且常見於網站導覽列?**
- A) `<ul><a href="#">首頁</a><a href="#">關於</a></ul>`
- B) `<nav><a href="#">首頁</a> | <a href="#">關於</a></nav>`
- C) `<ul><li><a href="#">首頁</a></li><li><a href="#">關於</a></li></ul>`
- D) `<ol><a><li href="#">首頁</li></a><a><li href="#">關於</li></a></ol>`
<details>
<summary>點選查看答案</summary>
答案: C) `<ul><li><a href="#">首頁</a></li><li><a href="#">關於</a></li></ul>`
**解析:**
標準的導覽列結構是使用無序清單 `<ul>`,其中每個清單項目 `<li>` 包含一個超連結 `<a>`。
</details>
## 第三章:語意化與進階應用
**1. 下列何者是 HTML5 的語意標籤?**
- A) `<div>`
- B) `<span>`
- C) `<header>`
- D) `<container>`
<details>
<summary>點選查看答案</summary>
答案: C) `<header>`
</details>
**2. 一個網頁應該有幾個 `<main>` 標籤?**
- A) 0 個
- B) 1 個
- C) 2 個以上
- D) 不限制
<details>
<summary>點選查看答案</summary>
答案: B) 1 個
</details>
**3. 若要標示機器可讀的日期與時間,應使用哪個語意標籤?**
- A) `<span datetime="...">`
- B) `<time datetime="...">`
- C) `<date value="...">`
- D) `<moment time="...">`
<details>
<summary>點選查看答案</summary>
答案: B) `<time datetime="...">`
</details>
**4. 對於純裝飾性的圖片,`alt` 屬性應該如何設定?**
- A) 不需要 alt 屬性
- B) `alt=""`(空白)
- C) `alt="裝飾圖片"`
- D) `alt="image"`
<details>
<summary>點選查看答案</summary>
答案: B) `alt=""`(空白)
</details>
**5. 下列何者不是 WCAG 的核心原則?**
- A) 可感知(Perceivable)
- B) 可操作(Operable)
- C) 可獲利(Profitable)
- D) 可理解(Understandable)
<details>
<summary>點選查看答案</summary>
答案: C) 可獲利(Profitable)
</details>
**6. 表單欄位的 `<label>` 主要用途是什麼?**
- A) 美化樣式
- B) 提供欄位說明,提升可及性
- C) 驗證輸入
- D) 儲存資料
<details>
<summary>點選查看答案</summary>
答案: B) 提供欄位說明,提升可及性
</details>
**7. `<title>` 標籤的建議長度是多少字元?**
- A) 20-30 字元
- B) 50-60 字元
- C) 100-120 字元
- D) 不限制
<details>
<summary>點選查看答案</summary>
答案: B) 50-60 字元
</details>
---
#### 綜合應用題
**8. 小華想打造一個可及性友善的個人部落格,下列哪個設計最不符合 WCAG 標準?**
- A) 所有圖片都加上 `alt` 屬性,純裝飾圖片使用 `alt=""`
- B) 表單欄位都有對應的 `<label>`,且 `for` 與 `id` 正確配對
- C) 使用淺灰色文字(#ccc)搭配白色背景(#fff)
- D) 確保所有功能都可以用鍵盤操作(Tab 鍵導航)
<details>
<summary>點選查看答案</summary>
答案: C) 使用淺灰色文字(#ccc)搭配白色背景(#fff)
**解析:**
- A) 正確:圖片必須有 `alt`,裝飾性圖片用空 `alt` 讓螢幕閱讀器略過
- B) 正確:這是表單可及性的核心要求
- C) **錯誤**:淺灰色與白色對比度不足,視力較弱或色盲者難以閱讀。WCAG 要求文字對比度至少 4.5:1(AA 級)或 7:1(AAA 級)
- D) 正確:鍵盤導航是可及性的基本要求
**WCAG 四大原則:**
1. **可感知(Perceivable)** - 足夠的對比度屬於此類
2. **可操作(Operable)** - 鍵盤導航
3. **可理解(Understandable)** - 清楚的標籤
4. **穩健(Robust)** - 正確的語意標籤
</details>
**9. 下列哪個網頁結構最符合語意化與 SEO 最佳實務?**
```html
<!-- 選項 A -->
<div class="header">
<div class="title">我的部落格</div>
<div class="menu">...</div>
</div>
<div class="content">
<div class="post">...</div>
</div>
<!-- 選項 B -->
<header>
<h1>我的部落格</h1>
<nav>...</nav>
</header>
<div id="main">
<div class="article">...</div>
</div>
<!-- 選項 C -->
<header>
<h1>我的部落格</h1>
<nav aria-label="主選單">...</nav>
</header>
<main>
<article>
<header><h2>文章標題</h2></header>
<p>內容...</p>
</article>
</main>
<footer>...</footer>
<!-- 選項 D -->
<body>
<h1>我的部落格</h1>
<ul><li><a href="#">首頁</a></li></ul>
<h2>文章標題</h2>
<p>內容...</p>
<p>版權所有</p>
</body>
```
- A) 選項 A
- B) 選項 B
- C) 選項 C
- D) 選項 D
<details>
<summary>點選查看答案</summary>
答案: C) 選項 C
**解析:**
選項 C 最完整且符合最佳實務:
1. ✅ 使用語意化標籤(`<header>`, `<nav>`, `<main>`, `<article>`, `<footer>`)
2. ✅ `<h1>` 作為唯一的網站主標題
3. ✅ 使用 `<main>` 標籤(一頁只能有一個)
4. ✅ 文章用 `<article>` 包裹,表示獨立完整內容
5. ✅ 加上 ARIA 屬性(`aria-label`)提升可及性
6. ✅ 文章內部有自己的 `<header>`(標籤可重複使用)
7. ✅ 有 `<footer>` 頁尾
其他選項問題:
- A) 全用 `<div>`,完全沒有語意,搜尋引擎與螢幕閱讀器難以理解結構
- B) 較好但不完美:用 `<div id="main">` 而非 `<main>` 標籤
- D) 缺少 `<header>`、`<nav>`、`<main>`、`<article>` 等語意標籤,結構平坦
**記住:語意化 = 結構清晰 = SEO 友善 = 可及性佳**
</details>
**10. 若要優化一個新聞網站的 SEO,下列哪個策略最完整?**
- A) 只要在 `<head>` 中加入 `<meta name="keywords">`,列出所有關鍵字
- B) 每頁都用相同的 `<title>`,統一品牌形象
- C) 結合 `<title>`、`<meta description>`、語意標籤、結構化資料、Open Graph 標籤
- D) 把所有文字都設定為 `<h1>`,增加搜尋權重
<details>
<summary>點選查看答案</summary>
答案: C) 結合
**解析:**
- A) 錯誤:Google 早已不看 `keywords` meta 標籤(因為被濫用)
- B) 錯誤:每頁應該有獨特的 `<title>`,描述該頁內容
- C) **正確**:現代 SEO 需要多方面優化:
- `<title>` - 搜尋結果標題(50-60 字元)
- `<meta description>` - 搜尋結果摘要(150-160 字元)
- 語意標籤 - 幫助搜尋引擎理解結構
- 結構化資料 - 顯示星等、價格、發布日期等
- Open Graph - 社群分享時的顯示內容
- D) 錯誤:只能有一個 `<h1>`,濫用會被懲罰
**SEO 綜合策略:**
```html
<head>
<!-- 基礎 SEO -->
<title>新聞標題 | 網站名稱</title>
<meta name="description" content="新聞摘要...">
<!-- Open Graph(社群分享)-->
<meta property="og:title" content="新聞標題">
<meta property="og:description" content="新聞摘要">
<meta property="og:image" content="縮圖.jpg">
<!-- 結構化資料(JSON-LD)-->
<script type="application/ld+json">
{
"@type": "NewsArticle",
"headline": "新聞標題",
"datePublished": "2025-01-01"
}
</script>
</head>
<body>
<!-- 語意化結構 -->
<article>
<h1>新聞標題</h1>
<time datetime="2025-01-01">2025年1月1日</time>
<p>內容...</p>
</article>
</body>
```
</details>
**11. 下列關於 `<article>` 和 `<section>` 標籤的使用,何者正確?**
- A) `<article>` 只能用一次,`<section>` 可以用多次
- B) `<article>` 內不能再包含 `<article>`
- C) `<article>` 是獨立完整的內容,可以單獨分發;`<section>` 是主題性區段
- D) `<article>` 和 `<section>` 完全相同,可以互換使用
<details>
<summary>點選查看答案</summary>
答案: C) `<article>` 是獨立完整的內容,可以單獨分發;`<section>` 是主題性區段
**解析:**
- A) 錯誤:兩者都可以多次使用
- B) 錯誤:`<article>` 內可以包含 `<article>`(例如文章內的評論)
- C) **正確**:這是兩者的核心差異
- `<article>` - 獨立、完整、可分發(如部落格文章、新聞、產品卡片)
- `<section>` - 主題性區段,依賴上下文(如章節、分頁)
- D) 錯誤:兩者語意不同,不可互換
**實際範例:**
```html
<article> <!-- 部落格文章 -->
<h2>如何學習 HTML</h2>
<section> <!-- 文章的第一部分 -->
<h3>為什麼要學 HTML</h3>
<p>...</p>
</section>
<section> <!-- 文章的第二部分 -->
<h3>學習步驟</h3>
<p>...</p>
</section>
<article> <!-- 評論也是獨立完整的內容 -->
<h4>讀者 小明 的評論</h4>
<p>寫得很好!</p>
</article>
</article>
```
**記憶口訣:**
- `<article>` = 可以單獨 RSS 訂閱的內容
- `<section>` = 文章內的章節
</details>
**12. 觀察以下兩個網站在 Google 搜尋結果的表現,哪個網站的 HTML 設定較完整?**
```
網站 A 的搜尋結果:
┌─────────────────────────────────┐
│ 首頁 │
│ https://example-a.com │
│ (沒有描述) │
└─────────────────────────────────┘
網站 B 的搜尋結果:
┌─────────────────────────────────┐
│ HTML 入門教學 | 從零開始學網頁 │
│ https://example-b.com/html │
│ 2025 最新 HTML 教學,涵蓋語意... │
│ ⭐⭐⭐⭐⭐ 4.8 · 評論 328 則 │
└─────────────────────────────────┘
```
網站 B 可能包含以下哪些設定?
- A) 只有 `<title>` 標籤
- B) `<title>` 和 `<h1>` 標籤
- C) `<title>`、`<meta description>`、結構化資料(Structured Data)
- D) 只有 Open Graph 標籤
<details>
<summary>點選查看答案</summary>
答案: C)
**解析:**
網站 B 的搜尋結果顯示:
1. **標題** - 來自 `<title>` 標籤
2. **描述** - 來自 `<meta name="description">` 標籤
3. **星等評論** - 來自結構化資料(Schema.org JSON-LD)
```html
<!-- 網站 B 的 HTML -->
<head>
<title>HTML 入門教學 | 從零開始學網頁</title>
<meta name="description" content="2025 最新 HTML 教學,涵蓋語意化標籤、可及性、SEO 優化,適合初學者。">
<!-- 結構化資料 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "HTML 入門教學",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "328"
}
}
</script>
</head>
```
**為什麼其他選項錯誤:**
- A) 只有標題,無法顯示描述與星等
- B) `<h1>` 不會顯示在搜尋結果中
- D) Open Graph 用於社群分享,不影響 Google 搜尋結果
**學習重點:**
完整的 SEO 需要三個層面配合:
1. **基礎 meta 標籤** - `<title>` 和 `<meta description>`
2. **結構化資料** - 顯示額外資訊(星等、價格、日期)
3. **語意化 HTML** - 幫助搜尋引擎理解內容結構
</details>
---
**13. 完整的語意化網頁結構應包含哪些主要標籤?**
- A) `<div>`、`<span>`、`<p>`
- B) `<header>`、`<main>`、`<footer>`
- C) `<table>`、`<form>`、`<list>`
- D) `<section>`、`<aside>`、`<nav>` 但不需要 `<main>`
<details>
<summary>點選查看答案</summary>
答案: B) `<header>`、`<main>`、`<footer>`
解析:語意化網頁的基本結構包括 `<header>`(頁首)、`<main>`(主要內容)、`<footer>`(頁尾),搭配 `<nav>`、`<article>`、`<section>` 等。
</details>
**14. `<meta name="description">` 標籤的主要用途是什麼?**
- A) 設定網頁的字元編碼
- B) 提供網頁摘要給搜尋引擎
- C) 定義網頁的標題
- D) 設定網頁的關鍵字
<details>
<summary>點選查看答案</summary>
答案: B) 提供網頁摘要給搜尋引擎
解析:`<meta name="description">` 用於提供網頁的簡短描述,會顯示在搜尋引擎結果中,對 SEO 很重要。
</details>
---
**15. 以下語意化網頁結構中,哪個是最嚴重的錯誤?**
```html
<body>
<header>
<h1>我的網站</h1>
</header>
<main>
<article>
<h3>最新文章</h3>
</article>
</main>
<main>
<section>
<h2>關於我</h2>
</section>
</main>
</body>
```
- A) 標題從 `<h1>` 跳到 `<h3>`
- B) 重複使用兩個 `<main>` 標籤
- C) 缺少 `<nav>` 導覽列
- D) 缺少 `<footer>` 頁尾
<details>
<summary>點選查看答案</summary>
答案: B) 重複使用兩個 `<main>` 標籤
解析:一個網頁只能有一個 `<main>` 標籤,代表頁面的主要內容。重複使用會違反 HTML 規範。
</details>
## 第四章:CSS 與 JavaScript 整合入門
**1. 在網頁開發的前端三劍客中,負責處理「互動與邏輯」的是哪一項技術?**
- A) HTML
- B) CSS
- C) JavaScript
- D) SQL
<details>
<summary>點選查看答案</summary>
答案: C) JavaScript
**解析:**
HTML 負責結構,CSS 負責外觀樣式,JavaScript 負責互動與邏輯控制。SQL 則是資料庫查詢語言,屬於後端範疇。
</details>
**2. 在 CSS 盒模型 (Box Model) 中,位於「內容 (Content)」與「邊框 (Border)」之間的區域稱為什麼?**
- A) Margin (外距)
- B) Padding (內距)
- C) Outline (輪廓)
- D) Width (寬度)
<details>
<summary>點選查看答案</summary>
答案: B) Padding (內距)
**解析:**
由內而外的順序為:Content (內容) -> Padding (內距) -> Border (邊框) -> Margin (外距)。
</details>
**3. 若要選取 HTML 中 `<div id="header">` 這個元素,應該使用哪一個 CSS 選擇器?**
- A) `.header`
- B) `header`
- C) `*header`
- D) `#header`
<details>
<summary>點選查看答案</summary>
答案: D) `#header`
**解析:**
- `#` 用於 ID 選擇器 (對應 `id=""`)
- `.` 用於類別選擇器 (對應 `class=""`)
- 無符號直接寫標籤名用於元素選擇器
</details>
**4. 在 JavaScript 中,建議使用哪一種方式來監聽按鈕的點擊事件?**
- A) 在 HTML 中寫 `<button onclick="...">`
- B) 在 CSS 中寫 `button:active { ... }`
- C) 使用 `element.addEventListener('click', ...)`
- D) 使用 `element.click = ...`
<details>
<summary>點選查看答案</summary>
答案: C) 使用 `element.addEventListener('click', ...)`
**解析:**
- A) 是內嵌寫法,不推薦。
- B) 是 CSS 偽類,只能改變樣式,不能執行邏輯。
- C) 是標準且推薦的事件監聽方式,可同時綁定多個事件且結構分離。
</details>
**5. 若要使用 JavaScript 動態建立一個新的 `<div>` 元素,應該使用哪個方法?**
- A) `document.createElement('div')`
- B) `document.newElement('div')`
- C) `document.add('div')`
- D) `document.make('div')`
<details>
<summary>點選查看答案</summary>
答案: A) `document.createElement('div')`
**解析:**
`document.createElement(tagName)` 是標準的 DOM API,用於建立新的元素節點。
</details>
**6. 為了符合無障礙設計並讓文字大小能隨瀏覽器設定縮放,建議使用哪種單位來設定 `font-size`?**
- A) px (像素)
- B) rem
- C) cm (公分)
- D) vh (視窗高度)
<details>
<summary>點選查看答案</summary>
答案: B) rem
**解析:**
`rem` 是相對於根元素 (root element) 的字體大小,能響應使用者在瀏覽器設定的預設字體大小,是目前最推薦的文字單位。
</details>
**7. 若希望某個元素在網頁上「完全消失」且「不佔據任何空間」,應設定什麼 CSS?**
- A) `opacity: 0;` (透明度為 0)
- B) `visibility: hidden;` (隱藏可見度)
- C) `display: none;` (不顯示)
- D) `background-color: transparent;` (背景透明)
<details>
<summary>點選查看答案</summary>
答案: C) `display: none;`
**解析:**
- `display: none;` 會讓元素從排版中完全移除,不佔空間。
- `opacity: 0` 和 `visibility: hidden` 雖然看不見,但元素原本的位置仍會被保留 (佔空間)。
</details>
**8. 在 `display: flex;` 的容器中,若要將子元素「水平置中」排列,應使用哪個屬性?**
- A) `align-items: center;`
- B) `text-align: center;`
- C) `padding: center;`
- D) `justify-content: center;`
<details>
<summary>點選查看答案</summary>
答案: D) `justify-content: center;`
**解析:**
在預設的 Flex 模式下 (橫向排列),`justify-content` 控制主軸 (水平) 的對齊,`align-items` 控制交錯軸 (垂直) 的對齊。
</details>
**9. 在 JavaScript 中,若宣告一個變數後「不打算」也「不應該」再修改其數值,應使用哪個關鍵字?**
- A) `var`
- B) `let`
- C) `const`
- D) `static`
<details>
<summary>點選查看答案</summary>
答案: C) `const`
**解析:**
`const` (constant) 用於宣告常數,一旦賦值後就不能再重新賦值 (Reassign),這能提高程式的穩定性與可讀性。
</details>
**10. 若要製作一個按鈕,點擊時能「切換」選單的顯示與隱藏狀態 (有就移除 class,沒有就新增),最推薦使用哪個方法?**
- A) `classList.add()`
- B) `classList.remove()`
- C) `classList.toggle()`
- D) `classList.switch()`
<details>
<summary>點選查看答案</summary>
答案: C) `classList.toggle()`
**解析:**
`classList.toggle('className')` 會自動偵測:若元素已有該 class 則移除,若沒有則新增,非常適合用於開關式 (On/Off) 的互動功能。
</details>
## 第五章:AI 輔助開發與學習
**1. 使用 AI 學習 HTML 時,下列何者是最佳實務?**
- A) 完全依賴 AI,不需要理解原理直接複製
- B) 用 AI 解釋概念,但要自己動手實作與驗證
- C) 為了省時間,請 AI 代寫所有作業
- D) 避免使用 AI,認為它會阻礙學習
<details>
<summary>點選查看答案</summary>
答案: B) 用 AI 解釋概念,但要自己動手實作與驗證
**解析:** AI 是輔助工具,親自實作與理解原理才是將知識內化的關鍵。
</details>
**2. 一個好的 AI 提示詞 (Prompt) 應該包含哪些要素?**
- A) 只需要簡單一句話
- B) 角色設定、明確任務、具體要求、輸出格式
- C) 越冗長越好,包含所有細節
- D) 只要這行字能跑出來就好
<details>
<summary>點選查看答案</summary>
答案: B) 角色設定、明確任務、具體要求、輸出格式
**解析:** 結構完整的提示詞能讓 AI 更準確理解你的需求,減少嘗試錯誤的時間。
</details>
**3. 下列哪一種方式**不屬於**正確的 AI 協作模式?**
- A) 先規劃架構,再請 AI 提供實作建議
- B) 請 AI 進行程式碼審查 (Code Review)
- C) 要求 AI 一次寫出完美的完整系統,不做任何檢查
- D) 遇到 Bug 時,將錯誤訊息貼給 AI 尋求解決方案
<details>
<summary>點選查看答案</summary>
答案: C) 要求 AI 一次寫出完美的完整系統,不做任何檢查
**解析:** AI 可能會犯錯,且一次生成過多程式碼難以除錯。應採用「迭代開發」與「逐步實作」的方式。
</details>
**4. 關於未來的學習方向,下列哪項建議較為適當?**
- A) 學完 HTML 就可以停止學習了
- B) 直接跳過 CSS/JS,開始學大型框架
- C) 持續精進 CSS 與 JavaScript,並建立實戰專案
- D) 專注在背誦所有標籤,不需練習
<details>
<summary>點選查看答案</summary>
答案: C) 持續精進 CSS 與 JavaScript,並建立實戰專案
**解析:** 前端技術日新月異,打好基礎 (HTML/CSS/JS) 並透過專案實作累積經驗,是持續成長的最佳路徑。
</details>