HTML CSS 範例怎麼寫?跟著網頁設計教學完成卡片排版

HTML CSS 範例的核心重點

HTML 負責建立網頁的內容與結構,CSS 負責顏色、字型、間距、尺寸及版面配置。初學者要完成可實際執行的 HTML CSS 範例,只需先建立 HTML 元素,再透過行內、內部或外部樣式表套用 CSS。其中,行內樣式適合單次測試,內部樣式適合單頁範例,外部樣式表則最適合正式網站與多頁專案。若要快速入門,可先把 CSS 寫在 HTML 的<style>標籤內,熟悉選擇器後再拆分成獨立 CSS 檔案。

HTML 與 CSS 分別負責什麼

HTML CSS 差別

HTML CSS 差別可以從「結構」與「外觀」理解。HTML 是標記語言,用來描述標題、段落、連結、圖片、表單及導覽列等內容;CSS 是階層樣式表,用來控制這些內容如何顯示。

例如,<h2>代表第二層標題,<p>代表段落,<a>代表連結。至於標題要多大、段落使用什麼顏色、連結被滑鼠移入時如何變化,則由 CSS 決定。

將兩者分開的主要優點,是同一份 HTML 結構可以套用不同視覺設計。網站需要調整品牌顏色時,只要修改 CSS,不必逐一改寫每個 HTML 元素。這也符合網頁標準所強調的關注點分離原則。

HTML 與 CSS 比較表

比較項目 HTML CSS
完整名稱 HyperText Markup Language Cascading Style Sheets
主要功能 建立內容與文件結構 控制外觀與版面
常見內容 標題、段落、圖片、連結、表單 顏色、字型、間距、尺寸、排列
基本寫法 <p>內容</p> p { color: red; }
可否單獨顯示 可以,但只有瀏覽器預設樣式 必須套用在 HTML 或其他可樣式化文件上
對 SEO 的作用 提供語意及內容階層 改善閱讀體驗,但不能取代語意 HTML
維護重點 標籤結構與可存取性 共用規則、命名與響應式設計

HTML CSS 語法基礎

HTML 文件的基本結構

一份符合現代 HTML 標準的文件,通常包含文件類型、語言設定、字元編碼、頁面標題及主要內容。台灣繁體中文頁面應將lang設定為zh-Hant-TW,並使用 UTF-8 字元編碼。

<!DOCTYPE html>
<html lang="zh-Hant-TW">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>HTML CSS 範例</title>
</head>
<body>
  <h1>我的第一個網頁</h1>
  <p>這是一段網頁內容。</p>
</body>
</html>

<!DOCTYPE html>告訴瀏覽器使用現代 HTML 模式解析文件。viewport設定能讓頁面在手機裝置上依螢幕寬度正確縮放,而title則是瀏覽器分頁名稱,也通常會成為搜尋結果標題的重要參考。

CSS 規則的組成

一組標準 CSS 規則由選擇器與宣告區塊構成。選擇器決定哪些 HTML 元素會受到影響,大括號內則放置屬性和值。

p {
  color: red;
  font-size: 18px;
}

上述規則的選擇器是p,表示套用到頁面中的所有段落。colorfont-size是 CSS 屬性,red18px則是對應的值。每一項宣告通常以分號結束,能降低後續新增樣式時發生錯誤的機率。

CSS 套用的三種方法

行內撰寫 Inline

行內撰寫表示直接在元素的style屬性內加入 CSS。以下網頁會顯示三段不同顏色的文字。

<p style="color: red;">紅色文字</p>
<p style="color: green;">綠色文字</p>
<p style="color: blue;">藍色文字</p>

這種方法容易理解,也適合快速測試,但樣式會與內容混在一起。當多個元素需要相同設定時,必須重複撰寫,不利於維護,因此不建議作為大型網站的主要 CSS 樣式套用方式。

內部撰寫 Internal

內部樣式是把 CSS 放在 HTML 文件<head>中的<style>標籤內。搜尋「CSS 寫在 HTML」時,通常指的就是行內樣式或這種內部樣式。

<head>
  <style>
    p {
      color: #b42318;
      line-height: 1.8;
    }
  </style>
</head>

內部樣式能集中管理單一頁面的設計,適合練習、原型或只有一頁的小型文件。不過,多個頁面若都需要相同樣式,仍會產生重複程式碼。

外部撰寫 External

外部樣式表是把 CSS 存成獨立檔案,再由 HTML 的<link>元素載入。

<head>
  <link rel="stylesheet" href="styles.css">
</head>
body {
  margin: 0;
  font-family: Arial, "Noto Sans TC", sans-serif;
}

外部 CSS 可供多個頁面共用,瀏覽器也有機會快取檔案,因此是正式網站最常見的做法。修改styles.css後,所有引用該檔案的頁面都能同步更新。

三種套用方式分析表

方法 撰寫位置 優點 限制 適用情境
行內樣式 HTML 元素的style屬性 測試快速、作用明確 重複度高、難以維護 單次測試或特殊動態值
內部樣式 <style>標籤 單頁集中管理 無法有效供多頁共用 教學範例、單頁原型
外部樣式 獨立.css檔案 易維護、可共用及快取 需要額外載入檔案 正式網站與多頁專案

CSS 選擇器教學

元素選擇器

元素選擇器直接使用 HTML 標籤名稱,會影響頁面中所有相同類型的元素。

p {
  color: red;
}

這段規則會讓所有<p>段落顯示為紅色。若只想改變特定段落,就不應直接使用範圍過大的元素選擇器。

class 選擇器

class 選擇器是實務上最常使用的方式,寫法是在名稱前加上點號,例如.card.button-primary。它會套用到所有具有對應class屬性的元素。

<article class="card">
  <h2>文章標題</h2>
  <p>卡片內容說明。</p>
</article>

<a class="button-primary" href="/contact">聯絡我們</a>
.card {
  padding: 24px;
  border: 1px solid #d0d5dd;
  border-radius: 12px;
}

.button-primary {
  display: inline-block;
  padding: 10px 18px;
  color: #ffffff;
  background-color: #175cd3;
  text-decoration: none;
  border-radius: 6px;
}

同一個 class 可以重複套用在多個元素上,因此比逐一加入行內樣式更容易建立一致的介面。

ID 選擇器

ID 選擇器在名稱前加入井字號,對應 HTML 的id屬性。

<header id="site-header">網站頁首</header>
#site-header {
  background-color: #101828;
  color: #ffffff;
}

同一頁中的 ID 值應保持唯一。由於 ID 選擇器的特異性較高,元件樣式通常優先使用 class,避免未來覆寫規則變得困難。

偽類選擇器

偽類可依元素狀態套用樣式。連結常見狀態包括:link:visited:hover:focus

a {
  color: #175cd3;
}

a:hover {
  color: #b42318;
}

a:focus-visible {
  outline: 3px solid #fdb022;
  outline-offset: 3px;
}

不要只設計:hover而忽略鍵盤操作。加入清楚的:focus-visible樣式,可讓未使用滑鼠的使用者知道目前焦點位置。

完整 HTML 與 CSS 卡片範例

可直接執行的 HTML CSS 教學程式碼

以下 CSS 模板整合語意 HTML、class 選擇器、Flexbox、按鈕及滑鼠互動。將程式碼儲存為index.html後,即可使用瀏覽器開啟。

<!DOCTYPE html>
<html lang="zh-Hant-TW">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>服務卡片範例</title>
  <style>
    * {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      padding: 40px 20px;
      color: #1d2939;
      background: #f2f4f7;
      font-family: Arial, "Noto Sans TC", sans-serif;
      line-height: 1.6;
    }

    .card-list {
      display: flex;
      flex-wrap: wrap;
      gap: 24px;
      max-width: 960px;
      margin: 0 auto;
    }

    .card {
      flex: 1 1 280px;
      padding: 24px;
      background: #ffffff;
      border: 1px solid #eaecf0;
      border-radius: 12px;
      box-shadow: 0 4px 12px rgb(16 24 40 / 8%);
    }

    .card h2 {
      margin-top: 0;
      font-size: 24px;
    }

    .button {
      display: inline-block;
      padding: 10px 16px;
      color: #ffffff;
      background: #175cd3;
      border-radius: 6px;
      text-decoration: none;
      transition: background-color 0.2s ease;
    }

    .button:hover {
      background: #1849a9;
    }

    .button:focus-visible {
      outline: 3px solid #fdb022;
      outline-offset: 3px;
    }
  </style>
</head>
<body>
  <main class="card-list">
    <article class="card">
      <h2>HTML結構</h2>
      <p>使用語意元素組織標題、段落及連結。</p>
      <a class="button" href="#html">查看內容</a>
    </article>

    <article class="card">
      <h2>CSS樣式</h2>
      <p>透過Flexbox、間距與色彩建立卡片版面。</p>
      <a class="button" href="#css">查看內容</a>
    </article>
  </main>
</body>
</html>

box-sizing: border-box會讓元素設定的寬度包含內距與邊框,通常較容易計算版面。.card-list使用 Flexbox 排列卡片,flex-wrap: wrap則允許卡片在空間不足時換行,避免固定欄數造成手機版面溢出。

側邊欄與導覽選單範例

側邊欄 HTML

側邊欄應使用具語意的nav元素,並提供可辨識的導覽標籤。

<div class="layout">
  <nav class="sidebar" aria-label="主要導覽">
    <a href="#home">首頁</a>
    <a href="#service">服務項目</a>
    <a href="#contact">聯絡方式</a>
  </nav>

  <main class="content">
    <h1>網站內容</h1>
    <p>這裡放置主要資訊。</p>
  </main>
</div>

側邊欄 CSS

.layout {
  display: flex;
  min-height: 100vh;
}

.sidebar {
  width: 240px;
  padding: 24px;
  background: #101828;
}

.sidebar a {
  display: block;
  padding: 12px;
  color: #ffffff;
  text-decoration: none;
  border-radius: 6px;
}

.sidebar a:hover,

.sidebar a:focus-visible {

background: #344054;

}

.content {

flex: 1;

padding: 32px;

}

@media (max-width: 700px) {

.layout {

flex-direction: column;

}

.sidebar {

width: auto;

}

}

媒體查詢會在畫面寬度不超過 700 像素時,把左右排列改成上下排列。這比完全依賴固定寬度更適合響應式網頁,但實際斷點仍應根據內容何時出現擁擠決定。

CSS 語法產生器與 CSS 樣式分享

如何正確使用 CSS 語法產生器

CSS 語法產生器可以協助建立漸層、陰影、圓角、Flexbox 或 Grid 設定,適合用來理解屬性及快速製作原型。不過,產生後仍應檢查是否存在重複宣告、不必要的瀏覽器前綴、過高的選擇器特異性,以及不符合專案命名方式的 class。

工具產出的程式碼不等於已完成最佳化。正式使用前,應透過瀏覽器開發者工具檢查計算後樣式,並在不同螢幕尺寸及主流瀏覽器中測試。

使用 CSS 樣式分享內容的注意事項

複製 CSS 樣式分享網站或社群提供的按鈕、卡片及選單時,應先確認授權條款,並檢查程式碼來源。若範例包含外部字型、圖示或 JavaScript,也要確認是否會連線至第三方服務。

套用 CSS 模板前,還要檢查色彩對比、鍵盤焦點、標題階層及手機顯示效果。外觀精美不代表符合可存取性,也不代表適合直接用於正式網站。

CSS 優先順序與常見問題

階層與特異性

CSS 中的 C 代表 Cascading,也就是階層與層疊。多個規則同時影響同一元素時,瀏覽器會綜合來源、重要性、特異性及出現順序決定最終樣式。

p {
  color: black;
}

.notice {
  color: blue;
}

#warning {
  color: red;
}

若一個段落同時符合上述三個選擇器,ID 選擇器通常會比 class 及元素選擇器更具優先性。行內樣式也具有較高權重。實務上不宜頻繁使用!important,否則後續覆寫會更加困難。

瀏覽器預設樣式

HTML 元素本身通常帶有瀏覽器預設樣式,例如標題外距、清單縮排及按鈕字型。若不同瀏覽器的預設差異干擾版面,可採用 Normalize.css,或自行建立簡單的基礎規則。

* {
  box-sizing: border-box;
}

body {
  margin: 0;
}

button,

input,

textarea,

select {

font: inherit;

}

Normalize.css 的方向是讓各瀏覽器的預設顯示更一致,而不是完全移除所有樣式。使用任何重設樣式前,都應理解它修改了哪些元素。

SEO 與網頁品質實務

使用語意 HTML

CSS 能改變外觀,卻不能取代正確的 HTML 語意。不要只為了放大文字就使用<h1>,也不要用普通<div>模擬按鈕。標題應依內容階層排列,互動按鈕應使用<button>,導覽區域則可使用<nav>

清楚的語意結構有助於搜尋引擎理解內容,也能讓螢幕閱讀器及鍵盤使用者更容易操作。

控制 CSS 檔案品質

正式網站應刪除長期未使用的規則,避免重複載入大型框架,並減少阻塞頁面顯示的不必要資源。壓縮 CSS 可以減少傳輸量,但原始碼仍應保留可維護的版本,再由建置流程輸出壓縮檔。

版面設計也應避免內容載入後產生明顯位移。例如,圖片應提供寬度與高度,動態區塊則要預留合理空間。這些做法有助於使用體驗與網站品質,但搜尋排名仍取決於內容、技術、連結及整體網站訊號,不能只靠 CSS 改善。

結論

HTML CSS 範例的學習順序應從 HTML 語意結構、CSS 基本規則、三種套用方式及選擇器開始,再進一步練習盒模型、Flexbox、響應式設計與互動狀態。單頁練習可先把 CSS 寫在 HTML 的<style>標籤中;進入正式專案後,則應使用外部樣式表集中管理。

選用 CSS 模板、CSS 語法產生器或 CSS 樣式分享程式碼時,不能只看視覺效果,還要檢查授權、效能、可存取性、響應式行為及程式碼品質。以語意 HTML 建立內容,再用可維護的 class 選擇器完成 CSS 樣式套用,才能兼顧搜尋理解、網站速度與長期維護。

常見問題

1. HTML 和 CSS 一定要一起使用嗎?

HTML 可以單獨顯示內容,但會採用瀏覽器預設樣式。CSS 必須套用到 HTML 等文件後,才能呈現其視覺效果。一般網站通常會同時使用兩者。

2. CSS 寫在 HTML 有哪些方法?

可以直接寫在元素的style屬性內,也可以放在 HTML 文件中的<style>標籤。前者是行內樣式,後者是內部樣式。

3. 初學者應先學 HTML 還是 CSS?

建議先理解 HTML 標籤、屬性與語意結構,再學 CSS 選擇器及樣式屬性。因為 CSS 需要先找到對應的 HTML 元素才能套用。

4. 為什麼 CSS 樣式沒有生效?

常見原因包括選擇器拼寫錯誤、CSS 檔案路徑錯誤、屬性值無效、規則被更高特異性的樣式覆蓋,以及瀏覽器仍使用快取版本。可利用開發者工具檢查元素。

5. class 與 ID 應該如何選擇?

可重複使用的元件樣式優先使用 class。ID 應在同一頁保持唯一,較適合片段連結、表單標籤關聯或 JavaScript 定位,不宜作為大量共用樣式的主要方法。

6. 行內 CSS 會影響 SEO 嗎?

行內 CSS 本身不會直接導致頁面無法排名,但大量使用會增加 HTML 體積及維護難度。若造成載入速度或使用體驗下降,可能間接影響網站品質。

7. 可以直接複製網路上的 CSS 模板嗎?

應先確認授權、來源及相依資源,並測試安全性、可存取性、瀏覽器相容性與響應式效果。不能假設所有公開程式碼都可無條件商業使用。

8. Normalize.css 和 CSS Reset 有什麼不同?

Normalize.css 主要讓各瀏覽器的預設樣式更一致,並保留部分合理預設;CSS Reset 通常會更全面地清除元素的外距、內距及其他樣式,再由開發者重新設定。

9. Flexbox 和 Grid 應該使用哪一個?

Flexbox 適合單一方向的排列,例如橫向導覽列或卡片列;Grid 適合同時控制列與欄的二維版面。兩者可以在同一網站依不同區塊需求搭配使用。

10. CSS 語法產生器產出的程式碼可以直接上線嗎?

不建議未經檢查就直接上線。應確認程式碼是否精簡、是否有無效屬性、是否支援目標瀏覽器,以及互動狀態和色彩對比是否符合實際需求。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料