CSS 教學筆記:內聯、內部、外部樣式與選擇器權重完整解析

更新於 發佈於 閱讀時間約 1 分鐘

CSS 是網頁的美化器,我個人覺得概念不難,但是很多細小的功能需要學習。這一篇主要介紹專有名詞。實際上要學會css還是要操作。我原本以為只要一篇文章就可以講完,結果需才寫兩個觀念就超過閱讀時間 5 分鐘... CSS 其實不難,只是很繁雜。

這篇聚焦在 CSS的樣式表、就是「選」HTML 元素的方法、CSS 權重。

學習資源:

課程框架:鬍子科技學院

操作模擬器:W3School 練習

IG 技術分享帳號:this.web


1. internal, external, inline CSS

1. Inline CSS(內聯樣式)

想像一下,你今天做了一個便當,結果你在每道菜上面都貼了個小紙條,寫著:

「炒蛋:鹽放一點點,飯糰:鹽巴少許,青菜多放兩朵花椰菜。」

這種方式 (inline) 就是直接在 HTML 元素上設定樣式,就像你直接把調味料標記在每一個菜的旁邊。

<p style="color:red;">這段文字會變紅色</p> <!-- 每一條都要這樣設定 -->

特點

  • 每道菜各自標記,很難統一管理。
  • 偶爾急用還行,但要管理大量樣式就崩潰了,而且別人要找也不好找。

2. Internal CSS(內部樣式)

你在便當盒裡放了一張紙條,告訴自己:「今天便當的菜都少鹽少油,白飯多一點」,這個規定就只針對今天這個便當內的所有菜有效。

  • <head> 標籤: 它是 HTML 的「腦袋」,主要放的東西是「設定」或是「樣式規定」,並不是畫面上真正會看到的內容。
  • <style> 標籤: 專門放 CSS 程式碼,讓你設定網頁裡元素長什麼樣子。
  • p { color: blue; }: 意思是『選到 HTML 裡的所有 <p> 元素,並讓它們的字體顏色變藍色』。
<!DOCTYPE html>
<html>
<head>
<style>
p{color:blue;}
</style>
</head>
<body>
<p>這段文字會是藍色的~</p>
<h1>這個標題不會變色喔!</h1>
<p>這段也會是藍色!</p>
</body>
</html>
raw-image


特點

  • 只對目前這個網頁有效,改一次所有內容就會跟著調整。
  • 比較方便統一,但還不夠靈活(其他便當要重寫一次規則)。

2. External CSS(外部樣式)

現在你直接寫了一個便當食譜,每道菜如何調味、要放什麼量、飯菜比例通通規定好。你有好幾個便當盒,每個便當盒都按照這個食譜來做,超級有效率又方便管理!

實際上是,外部樣式 (external CSS) 就是你把所有的CSS規則放到一個獨立的外部檔案裡,然後再從 HTML 文件去連結它。

📖 怎麼用?

你要做兩個步驟:

Step 1:建立外部CSS檔案

比如你建一個叫做 style.css 的檔案:

把HTML 跟CSS Javascript放在一起

把HTML 跟CSS Javascript放在一起


p {
color: blue;
font-size: 16px;
}

這邊意思是:

  • 所有 HTML 的 <p> 段落都會變成藍色、18px 字體大小。

Step 2:HTML 檔案內連結這個CSS檔

接著在 HTML 檔案中,用下面的方式載入它:

href="style.css" 是指來源的檔案。

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>這個段落會變藍色,因為有外部樣式!</p>
</body>
</html>

這樣就完成啦~


🔍 實際運作的原理是:

  • 當瀏覽器讀到 HTML 中的這句話:
    <link rel="stylesheet" href="style.css">
    它會馬上跑去打開旁邊的 style.css 檔案。
  • 然後讀到 style.css 裡面有一行:
p { color: blue; }

它就知道了:「喔,原來所有的 <p> 都要變成藍色呀!」


📌 外部樣式好處在哪裡?

  • 只需要寫一次,就能用在很多網頁上,超省事!
  • 之後要修改樣式,改一次 style.css 就可以影響到每個頁面,不用一個個頁面修改,省事很多。

✨ 小總結:

  • Inline CSS:直接在元素上寫樣式,很難管理。
  • Internal CSS:寫在 HTML 中,只適用於這一頁。
  • External CSS:獨立一個外部檔案,全部頁面都能用,方便又乾淨。

2 Selectors (class, id, element, universal)

CSS Selector 的作用就是「哪些 HTML 元素要套用特定樣式」

1. Element Selector(元素選擇器)

  • 功能:依據 HTML 的元素標籤名稱選取元素。
  • 作用:快速、統一地設定特定元素的樣式,例如一次調整所有段落文字 (<p>) 的外觀。

使用時機:

  • 所有文章的內文 (p) 都用同樣字體大小和顏色
  • 所有的標題 (h1, h2) 統一用特定字型或粗細
  • 全站連結 (a) 都統一樣式

範例:

p {
color: blue;
}

上方表示所有的段落文字都會變成藍色。


2. Class Selector(類別選擇器)

  • 功能:選取特定類別(class)的元素,class 可以重複使用。
  • 作用:將特定的樣式套用到多個不同種類的元素上。

當你想設定一個可重複用在不同元素或區塊的特殊樣式時會用 Class,例如:

  • 設定某些「強調文字」或「按鈕」的特殊樣式
  • 讓多個不同元素使用統一的排版樣式(例如產品卡片、文章卡片)
  • 樣式會重複用到很多次時使用,方便管理且清晰明瞭。
.highlight {
background-color: yellow;
}

這樣一來,只要 HTML 元素有設定 class="highlight",它就會自動套用黃色背景。有點像是螢光筆可以到處塗的感覺。


3. ID Selector(身份選擇器)

  • 功能:根據 HTML 中獨特的 ID 名稱來選取唯一元素,每個 ID 只能使用一次。
  • 作用:精準且唯一地指定某一個元素。

我自己感覺沒那麼好用,可能在頁面的主標題(hero banner)、網站 LOGO、導航欄或重要的互動元素上。

#main-title {
font-size: 32px;
}

這樣,只有 id 為 main-title 的元素會被改成 32px。


4. Universal Selector(通用選擇器)

  • 功能:選擇 HTML 文件中所有的元素。
  • 作用:快速將一些共用設定(例如重置margin, padding)一次套用到所有元素。小小複習,margin 是你按 F12 會出現的
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}

所有元素都會被套用這個規則。

這是方格子編輯器的CSS,可以看到 上一個動作跟下一個動作的樣式都是一樣的

這是方格子編輯器的CSS,可以看到 上一個動作跟下一個動作的樣式都是一樣的



🔑 總結選擇器的用途:

  • element 選擇器:適合快速統一調整同類型元素樣式。
  • class 選擇器:重複套用相同樣式到不同種類的元素。
  • id 選擇器:單獨調整某個特定元素樣式。
  • universal 選擇器:快速一次設定所有元素的樣式,通常用來重置或初始化樣式設定。



3. CSS specificity(權重)

CSS 也會搶地盤!權重大小是這樣:

inline > ID > Class > Element

簡單說,越具體的選擇方式越能壓制其他樣式。我們來示範一個例子:

假設你有一個 HTML 段落:

<p id="special" class="highlight">CSS 權重大比拼!</p>

你寫了三種 CSS:

/* 第一種:用 element 選擇器 */
p {
color: blue;
}

/* 第二種,用 class 選擇器 */
.highlight {
color: green;
}

/* 第三種,用 ID 選擇器 */
#special {
color: red;
}

那你猜猜看,最後這個段落的字體顏色會是哪一個?


🔥答案:會是紅色!

為什麼呢?因為 CSS 權重的計算方式是:

ID > Class > Element
  • #special (id) 權重最高 → 紅色勝利 🎯
  • .highlight (class) 次之
  • p 最弱

所以,即使你同時給段落寫了好幾種樣式,瀏覽器會根據權重來決定用哪一個:

inline style > ID (#id) > Class (.class) > Element (p, div)

📌再補充一下 inline style:

假如你又在 HTML 裡面使用 inline style:

<p id="special" class="highlight" style="color: green;">CSS 權重大比拼!</p>

這時候就算你 ID 寫的是紅色,inline 樣式的權重還是最大,結果會是綠色

試玩看看








留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
13會員
60內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
在本章中,我們探討了CSS Grid佈局的基本概念和應用。CSS Grid提供了一個強大而靈活的二維佈局系統,使得處理複雜的網頁佈局變得更加簡單和直觀。我們學習了如何設置Grid容器和Grid項目,以及如何使用各種Grid屬性來定義和管理佈局。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
這是一篇關於CSS Battle系列的文章,介紹瞭如何通過CSS來處理特定圖案的切版與前端工程技術。文章分享了使用grid和radial-gradient()方法來處理特定圖案的解法以及相關技術總結。
Thumbnail
CSS 樣式採用規則:先看權重,再看誰後
Thumbnail
CSS 樣式採用規則:先看權重,再看誰後
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
Thumbnail
您對前端有興趣,對CSS不陌生。CSS新特性前應瞭解基本內容。CSS屬性制定經歷過程,瀏覽器私有前綴及處理,開發者對新特性漸進增強,優雅降級處理,Web標準定義、作用等。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News