HTML 像骨架
它決定這頁有標題、段落、圖片、連結、表格、表單、區塊等結構。
前面的章節已經說明了資料如何經過網路與 HTTP 送到瀏覽器,而這一章先專注在 瀏覽器拿到 HTML 後,如何建立內容結構,並用 CSS 把畫面排好。 你會先打穩標籤、屬性、選擇器與版型觀念;下一章再接著學 JavaScript、DOM 與 CSS 互動。
新手最常見的困惑,是把「內容結構」和「外觀樣式」混在一起。其實 HTML 與 CSS 的責任完全不同: HTML 負責定義頁面裡有什麼,CSS 負責定義它們看起來怎樣。 先分清楚這兩者,之後再學 JavaScript 或框架才不會混亂。
它決定這頁有標題、段落、圖片、連結、表格、表單、區塊等結構。
它決定字體、顏色、間距、大小、欄位排列、卡片風格與響應式版面。
它處理點擊、輸入、資料更新與 DOM 改變,讓畫面變得可互動。
先理解 HTML / CSS,再學 DOM 與 JavaScript,最後再進入框架,會更有脈絡。
| 技術 | 主要角色 | 常見語法 | 你會看到的結果 |
|---|---|---|---|
| HTML | 定義內容結構與語意 | <h1>、<p>、<a>、<section> |
頁面有哪些區塊與元素 |
| CSS | 控制樣式、排版與視覺效果 | .card { ... }、display: flex; |
畫面好不好看、排版是否整齊 |
| JavaScript | 控制互動與邏輯 | addEventListener()、fetch() |
按鈕點擊、內容切換、資料更新 |
如果你是第一次接觸 HTML,不需要先把所有標籤背起來。先掌握 h1、p、div、a、button,就已經能做出第一個簡單頁面。
| 標籤 | 你可以拿來做什麼 | 最小語法 |
|---|---|---|
<h1> |
主標題 | <h1>課程首頁</h1> |
<p> |
段落說明 | <p>這是一段介紹文字。</p> |
<div> |
把一組內容包成區塊 | <div>...</div> |
<a> |
建立連結 | <a href="#lesson">查看課程</a> |
<button> |
放置可點擊操作 | <button>開始學習</button> |
這個例子故意很簡單,目的是讓你先有「我做得出來」的成就感。
<div>
<h1>AI 與 Web 入門</h1>
<p>先學會 HTML、CSS、DOM 與 Web server 的基本觀念。</p>
<a href="#lesson-list">查看章節</a>
<button>開始學習</button>
</div>
div 只是先把內容包在一起,之後就能一起套用樣式。h1 與 p 已經足以做出標題與介紹文字。a 與 button 讓頁面從純文字變成可操作介面。在學個別標籤前,先認識一份 HTML 文件最基本的結構。這就像一篇作文要有標題、段落與內容區一樣,HTML 也有固定骨架。
這是日後所有頁面的起點,理解它就能知道每個標籤在文件中的位置。
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>我的第一個網頁</title>
</head>
<body>
<h1>Hello HTML</h1>
<p>這是第一段內容。</p>
</body>
</html>
<!DOCTYPE html> 告訴瀏覽器這是一份 HTML5 文件。<html> 是整份文件的根元素,lang 屬性可以告訴瀏覽器頁面語言。<head> 放的是設定資訊,不直接顯示在頁面中。<body> 才是使用者真正會看到的內容區。| 標籤 | 基本語法 | 用途 | 說明與注意事項 |
|---|---|---|---|
<!DOCTYPE html> |
<!DOCTYPE html> |
宣告文件型別 | 通常放在第一行,讓瀏覽器用標準模式解析。 |
<html> |
<html lang="zh-Hant">...</html> |
整份 HTML 文件的根元素 | lang 有助於搜尋引擎與輔助工具理解語言。 |
<head> |
<head>...</head> |
放置中繼資訊 | 例如標題、字元編碼、樣式表、腳本連結。 |
<meta> |
<meta charset="utf-8"> |
設定文件資訊 | 常見用途是字元編碼與 viewport。這是 void element,不需要結尾標籤。 |
<title> |
<title>網站標題</title> |
設定瀏覽器分頁標題 | 也會影響搜尋結果顯示文字。 |
<link> |
<link rel="stylesheet" href="style.css"> |
連結外部資源 | 最常見用途是引入 CSS 檔案。也是 void element。 |
<script> |
<script src="app.js" defer></script> |
載入 JavaScript | defer 代表先解析 HTML,再執行腳本。 |
<body> |
<body>...</body> |
顯示內容的主區域 | 所有會出現在頁面上的標題、段落、圖片、表格多半都在這裡。 |
如果你是第一次學 HTML,這一段先當參考表使用;先能熟練前面的 5 個常用標籤即可。
| 標籤 | 基本語法 | 用途 | 補充說明 |
|---|---|---|---|
<h1> ~ <h6> |
<h1>主標題</h1> |
標題層級 | h1 最重要,數字越大層級越低,不只是字變小而已。 |
<p> |
<p>段落文字</p> |
一般段落 | 適合放敘述文字,瀏覽器會自帶上下間距。 |
<strong> |
<strong>重要</strong> |
強調重要內容 | 預設常以粗體呈現,但語意重點是「重要」。 |
<em> |
<em>語氣強調</em> |
語氣強調 | 預設常以斜體呈現,語意與 strong 不同。 |
<span> |
<span>行內文字</span> |
行內區塊 | 常用來搭配 CSS 對一句話中的局部內容加樣式。 |
<div> |
<div>區塊內容</div> |
一般區塊容器 | 本身沒有特殊語意,但方便分組與排版。 |
<br> |
<br> |
換行 | 是 void element,適合短句換行,不要拿來替代段落。 |
<hr> |
<hr> |
水平分隔線 | 適合區隔段落或主題。 |
| 標籤 | 基本語法 | 用途 | 關鍵屬性 |
|---|---|---|---|
<a> |
<a href="https://example.com">前往網站</a> |
建立超連結 | href 是目標網址;target="_blank" 可開新分頁。 |
<img> |
<img src="photo.jpg" alt="範例圖片"> |
顯示圖片 | src 指定來源,alt 是替代文字,對無障礙很重要。 |
<ul> |
<ul><li>項目</li></ul> |
無序清單 | 常用於選單、重點條列。 |
<ol> |
<ol><li>步驟一</li></ol> |
有序清單 | 適合流程與步驟說明。 |
<li> |
<li>清單項目</li> |
清單項目 | 要放在 ul 或 ol 裡面。 |
除了 div 之外,HTML5 提供了一批更有語意的區塊標籤,讓人與機器都更容易理解頁面結構。
| 標籤 | 用途 | 典型位置 |
|---|---|---|
<header> |
頁首區 | 網站標題、Logo、頁首資訊 |
<nav> |
導覽區 | 主選單、麵包屑、頁面連結 |
<main> |
頁面主要內容 | 每頁最重要、最核心的內容 |
<section> |
主題區塊 | 一章、一段主題內容 |
<article> |
獨立內容單元 | 文章、卡片、貼文、新聞 |
<aside> |
側邊補充資訊 | 側欄、補充欄、推薦閱讀 |
<footer> |
頁尾區 | 版權、聯絡資訊、頁尾導覽 |
下面這個例子可作為網站版面的通用骨架。
<header>網站標題</header>
<nav>首頁 / 課程 / 聯絡</nav>
<main>
<section>
<article>第一篇內容</article>
</section>
</main>
<footer>版權資訊</footer>
div 仍可使用;但有明確語意時,優先使用語意化標籤。標籤本身定義元素類型,屬性(attribute)則補充元素的設定。常見格式是 名稱="值"。
| 屬性 | 常見搭配 | 用途 |
|---|---|---|
class |
大多數標籤 | 讓 CSS / JavaScript 可以選取一群元素。 |
id |
大多數標籤 | 給元素唯一識別名稱,常用於 JS 與頁內連結。 |
href |
<a> |
設定連結目標。 |
src |
<img>、<script> |
設定外部資源來源。 |
alt |
<img> |
圖片無法顯示時的替代文字,也影響無障礙。 |
type |
<input>、<button> |
指定輸入框或按鈕型態。 |
placeholder |
<input>、<textarea> |
顯示提示文字。 |
<form>:包住整份表單。<label>:欄位說明文字。<input>:單行輸入框。<textarea>:多行輸入。<select> / <option>:下拉選單。<button>:提交或操作按鈕。<table>:整張表格。<thead>:表頭區。<tbody>:資料區。<tr>:列。<th>:標題儲存格。<td>:資料儲存格。每一條 CSS 規則都由「選擇器 + 宣告區塊」構成。
selector {
property: value;
property: value;
}
/* 範例 */
h1 {
color: #1d4ed8;
font-size: 32px;
}
| 類型 | 語法 | 用途 | 範例說明 |
|---|---|---|---|
| 元素選擇器 | p |
選取所有同類型標籤 | p { color: gray; } 會套用到所有段落。 |
| 類別選擇器 | .card |
選取 class 為 card 的元素 | 最常用於共用樣式。 |
| ID 選擇器 | #banner |
選取 id 為 banner 的元素 | 通常一頁只對應一個元素。 |
| 後代選擇器 | .card p |
選取 card 裡面的所有 p | 常用於限定範圍。 |
| 群組選擇器 | h1, h2, h3 |
同時套用多種元素 | 適合統一標題樣式。 |
| Pseudo-class | a:hover |
選取特殊狀態 | 例如滑鼠移上去時改顏色。 |
| 類別 | 常見屬性 | 用途 |
|---|---|---|
| 文字與顏色 | color、font-size、font-weight、line-height、text-align |
控制字的顏色、大小、粗細、行高與對齊。 |
| 盒模型 | width、height、margin、padding、border |
控制元素大小與內外距離。 |
| 背景與裝飾 | background、border-radius、box-shadow |
控制背景色、圓角、陰影與視覺層次。 |
| 版面配置 | display、position、flex、grid、gap |
控制區塊如何排列、對齊與響應式調整。 |
px:像素,最直覺。%:相對於父元素比例。rem:相對於根字級,適合整體縮放。vh / vw:相對於視窗高寬。#2563eb:十六進位色碼。rgb(37, 99, 235):RGB。rgba(37, 99, 235, 0.2):含透明度。hsl(217, 82%, 54%):以色相、飽和度、亮度表示。每個 HTML 元素都可以想成一個盒子,而盒子通常由 content → padding → border → margin 四層組成。 如果你不知道元素為什麼看起來太擠、太寬或沒對齊,通常問題就在盒模型。
同一個元素的大小,常常不只由 width 決定。
.box {
width: 220px;
padding: 20px;
border: 4px solid #2563eb;
margin: 16px;
background: #dbeafe;
}
box-sizing: border-box; 使用。| 技術 | 常見語法 | 適合情境 |
|---|---|---|
| Flexbox | display: flex;、justify-content、align-items、gap |
一維排列:一列卡片、工具列、按鈕列 |
| Grid | display: grid;、grid-template-columns、gap |
二維排列:卡片牆、儀表板、首頁分欄 |
這是最常用的版面語法之一,很適合教學網站與導覽列。
.card-row {
display: flex;
gap: 16px;
}
.card-row article {
flex: 1;
padding: 16px;
border-radius: 14px;
background: #eef4ff;
}
display: flex 讓子元素排成一列或一欄。gap 是元素之間的間距。flex: 1 代表每個子元素平均分配空間。
響應式設計(Responsive Design)的核心,是讓畫面依螢幕尺寸調整。
最常見的做法是使用 @media 條件判斷。
畫面寬度夠大時用兩欄,小螢幕時改為單欄。
.layout {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 768px) {
.layout {
grid-template-columns: 1fr;
}
}
@media 是 CSS 中用來根據條件切換樣式的語法。這組範例特別適合讓學生理解:HTML 是內容,CSS 是樣式。
<section class="notice">
<h2>課程提醒</h2>
<p>今天記得完成 HTML 與 CSS 練習。</p>
</section>
.notice {
padding: 18px;
border-left: 6px solid #2563eb;
background: #eff6ff;
}
雖然你這次要求重點補強 HTML 與 CSS,但仍要記住:真正讓畫面產生互動的,是 JavaScript。 它會操作 DOM、監聽事件、向伺服器發送請求,並把資料更新到頁面上。
請用 header、nav、main、section、footer 組出一個簡單頁面骨架。
請把一個 div 改造成卡片,至少使用 padding、background、border-radius、box-shadow 四個屬性。
請說明元素選擇器、class 選擇器與 id 選擇器的差異,並各寫一個範例。
如果卡片在手機上太擠,應該優先調整什麼?是 HTML 結構、CSS 版型,還是 JavaScript?
h1、p、div、a、button 這 5 個常用標籤最有效率。