# 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>