CSS 嚴格來說不是程式語言,而是「樣式表語言」(Style Sheet Language)。它使用選擇器、屬性與值,告訴瀏覽器如何呈現 HTML 元素,例如顏色、字型、間距、版面與動畫。CSS 通常不具備通用程式語言完整的流程控制、資料結構及輸入輸出能力,因此不宜與 JavaScript、Python 或 Java 歸為同一類;不過,CSS 仍有變數、函式、條件查詢及運算等特性,學習時同樣需要理解語法、繼承與執行規則。
CSS 是什麼?為什麼網頁需要 CSS
CSS 全名為 Cascading Style Sheets,繁體中文常譯為「階層式樣式表」或「串接樣式表」。CSS 的工作是定義 HTML 或 XML 文件的視覺呈現,包括文字大小、背景顏色、欄位排列、元素間距、響應式版面與動畫效果。
HTML 負責內容與結構,CSS 負責外觀,JavaScript 則處理互動與程式邏輯。若把網頁比喻成人,HTML 如同骨架與器官,CSS 負責衣著、顏色和外觀,JavaScript 則讓人能夠回應事件與採取行動。
CSS 不會取代 HTML。開發者不能只靠 CSS 建立具有語意的標題、段落或圖片內容,而是先以 HTML 建立元素,再透過 CSS 設定呈現方式。
CSS 是程式語言嗎
從技術分類來看,答案是否定的。CSS 是宣告式的樣式表語言,開發者描述希望元素「呈現成什麼樣子」,瀏覽器再依據層疊、繼承、權重與版面演算法計算結果。
一般程式語言通常具備變數、條件判斷、迴圈、函式、資料結構及輸入輸出等能力,可以描述完整的運算流程。CSS 雖然已經提供自訂屬性、calc()、媒體查詢、容器查詢及動畫,但它的主要目的仍是控制文件呈現,而不是處理一般用途的程式邏輯。
此外,CSS 採用容錯設計。當某個屬性名稱或屬性值無效時,瀏覽器通常會忽略該項宣告,繼續解析其餘規則,而不是讓整個網站崩潰。例如:
.card {
color: blue;
font-size: wrong-value;
background-color: white;
}
其中font-size的值無效,瀏覽器會忽略這一行,但有效的文字顏色與背景顏色仍可能正常生效。這種「優雅降級」是 CSS 的重要設計特性,不代表 CSS 沒有規則或不需要除錯。
HTML、CSS、JavaScript 與 SCSS 比較
技術定位比較表
| 技術 | 技術分類 | 主要用途 | 是否直接由瀏覽器處理 | 是否屬於通用程式語言 |
|---|---|---|---|---|
| HTML | 標記語言 | 建立網頁內容與語意結構 | 是 | 否 |
| CSS | 樣式表語言 | 控制外觀、排版與動畫 | 是 | 否 |
| JavaScript | 程式語言 | 處理互動、資料與應用邏輯 | 是 | 是 |
| SCSS | Sass 的語法格式與 CSS 預處理語法 | 擴充樣式開發功能並編譯為 CSS | 否,須先編譯 | 通常不視為通用程式語言 |
| Sass | CSS 預處理器及其語言生態 | 提供變數、巢狀、混入與控制指令 | 否,須先編譯 | 具有程式化特性,但用途集中於產生 CSS |
SCSS 不是瀏覽器能直接辨識的樣式格式,必須先經由 Sass 編譯器轉換成 CSS。早期 Sass 的主要實作以 Ruby 開發,但目前官方建議使用的 Dart Sass 是以 Dart 實作。因此,將所有 Sass 或 SCSS 都描述為「主要使用 Ruby」並不符合目前的實際發展。
SCSS 具有變數、函式、迴圈、條件指令及模組功能,程式化能力高於原生 CSS。不過,SCSS 的核心目標仍是產生 CSS,並非像 Python 或 JavaScript 一樣用於一般應用程式開發。
HTML CSS 語法如何互相配合
最基本的 HTML CSS 語法,是先利用 HTML 建立內容,再以 CSS 選擇器指定需要套用樣式的元素。以下 HTML 包含標題、段落與按鈕:
<article class="card">
<h2>CSS學習筆記</h2>
<p>使用CSS設定網頁外觀與版面。</p>
<a class="button" href="/css">查看內容</a>
</article>
對應的 CSS 可以寫成:
.card {
max-width: 640px;
padding: 24px;
border: 1px solid #d1d5db;
border-radius: 12px;
background-color: #ffffff;
}
.card h2 {
margin-top: 0;
color: #1f2937;
}
.button {
display: inline-block;
padding: 10px 16px;
color: #ffffff;
background-color: #2563eb;
text-decoration: none;
border-radius: 6px;
}
.card及.button是類別選擇器,瀏覽器會找到具有對應class的 HTML 元素,再套用大括號內的宣告。每項宣告由屬性、冒號、值和分號構成。
CSS 語法的基本結構
選擇器、屬性與值
一條完整 CSS 規則可寫成:
p {
color: #333333;
line-height: 1.8;
}
p是選擇器,代表所有<p>元素;color及line-height是屬性;#333333與1.8則是屬性值。大括號內可以放置多項宣告,建議每一項都以分號結尾,以降低後續編輯時發生錯誤的機率。
CSS 也能使用類別、ID、屬性與狀態選擇器:
.notice { color: #b91c1c; }
#main { width: 100%; }
input[type="email"] { border-color: #64748b; }
a:hover { text-decoration: underline; }
實務上應優先使用可重複的類別選擇器,避免過度依賴 ID 或建立層級過深的選擇器,以降低權重衝突與維護成本。
CSS 寫在 HTML 的三種方式
行內 CSS style 用法
行內樣式透過 HTML 的style屬性直接設定:
<p style="color: blue; font-size: 18px;">這是一段文字</p>
這是最直接的 CSS style 用法,適合電子郵件版型、快速測試或必須動態注入少量樣式的情境。但行內樣式難以重複利用,也容易造成維護困難,不建議用來建置完整網站。
內部樣式表
內部 CSS 放在 HTML 文件的<head>之中:
<head>
<style>
p {
color: blue;
font-size: 18px;
}
</style>
</head>
這種 CSS 寫在 HTML 的方式適合單頁展示、獨立原型或簡單測試。不過,多個頁面無法共同快取及重複使用同一份樣式。
外部樣式表
正式網站通常使用<link>載入外部 CSS:
<head>
<link rel="stylesheet" href="/css/style.css">
</head>
外部樣式表能集中管理、跨頁重複使用,也能由瀏覽器快取。大型專案還可依元件或功能拆分檔案,再透過建置工具進行合併及壓縮。
CSS 常用語法與實際 CSS 用法
CSS 語法表
| 類型 | 常用語法 | 主要用途 |
|---|---|---|
| 文字 | font-size、font-weight、line-height |
設定字級、粗細與行高 |
| 顏色 | color、background-color |
設定文字及背景顏色 |
| 盒模型 | margin、padding、border |
控制外距、內距與邊框 |
| 尺寸 | width、height、max-width |
控制元素尺寸 |
| Flexbox | display: flex、gap、justify-content |
建立一維排列版面 |
| Grid | display: grid、grid-template-columns |
建立二維網格版面 |
| 定位 | position、top、z-index |
控制元素位置及堆疊順序 |
| 響應式 | @media |
依螢幕或裝置條件調整樣式 |
| 動畫 | transition、transform、@keyframes |
建立轉場與動畫 |
| 變數 | --name、var() |
儲存並重複使用設計值 |
以下是整合多項 CSS 常用語法的響應式版面:
css
:root {
–primary-color: #2563eb;
–content-width: 1200px;
}
.container {
width: min(100% – 32px, var(–content-width));
margin-inline: auto;
}
.cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.card {
padding: 20px;
border-radius: 10px;
background-color: #ffffff;
transition: transform 0.2s ease;
}
.card:hover {
transform: translateY(-4px);
}
@media (max-width: 768px) {
.cards {
grid-template-columns: 1fr;
}
}
這段程式使用自訂屬性、Grid、函式、偽類、轉場及媒體查詢,呈現現代 CSS 已具備的豐富能力。但這些能力仍以畫面呈現為核心,不會改變 CSS 屬於樣式表語言的分類。
CSS 層疊、繼承與權重
CSS 名稱中的 Cascading 指「層疊」。當多項規則同時影響同一元素時,瀏覽器會綜合來源、重要性、樣式層、選擇器權重與出現順序,決定最後採用的值。
例如類別選擇器通常比元素選擇器具有更高權重:
p {
color: black;
}
.article-text {
color: green;
}
若段落具有article-text類別,文字通常會顯示為綠色。當權重相同時,位置較後的規則通常生效。
部分 CSS 屬性可以繼承,例如color及font-family;margin、padding與border則通常不會自動繼承。遇到樣式未生效時,應先使用瀏覽器開發者工具查看規則是否遭到覆寫,不要立刻加入!important。濫用!important會增加後續修改的難度。
CSS 語法產生器可以取代學習嗎
CSS 語法產生器可協助建立漸層、陰影、圓角、Grid、Flexbox 或動畫,適合用來快速產生初始程式碼。然而,產生器不能取代對盒模型、權重、繼承、響應式設計與瀏覽器相容性的理解。
使用 CSS 語法產生器後,應檢查是否存在多餘宣告、固定尺寸、重複樣式及不必要的瀏覽器前綴,也要確認輸出是否符合鍵盤操作、色彩對比、減少動態效果偏好等無障礙需求。對於正式網站,產生的 CSS 仍須經過人工測試及程式碼審查。
如何選擇 CSS 範例網站與學習資料
可靠的 CSS 範例網站應清楚說明屬性定義、支援情況、語法格式與實際限制,而不是只提供可以複製的片段。學習時可優先參考 MDN Web Docs、W3C 的 CSS 規範,以及 web.dev 等具備技術審查機制的資料。
MDN 適合查詢屬性定義、範例及瀏覽器相容性;W3C 規範適合確認標準的正式定義;Can I Use 則可用來了解特定功能的瀏覽器支援程度。若 CSS 範例網站沒有說明程式碼適用條件,使用前應以開發者工具和不同瀏覽器實際驗證。
初學者的 CSS 教學順序
學習 CSS 教學時,建議先理解 HTML 語意結構與選擇器,再依序掌握盒模型、文字樣式、背景、Flexbox、Grid、響應式設計、定位、層疊與權重。完成基礎後,再學習自訂屬性、容器查詢、轉場及動畫。
練習時應以小型元件開始,例如導覽列、按鈕、文章卡片或表單欄位,並使用瀏覽器開發者工具觀察計算後樣式。相較於直接背誦整份 CSS 語法表,理解屬性如何互相影響,更有助於解決真實版面問題。
結論
CSS 不是一般定義下的程式語言,也不是 HTML 那樣的標記語言,而是專門描述文件外觀與版面的樣式表語言。它與 HTML、JavaScript 分工合作:HTML 建立內容結構,CSS 控制視覺呈現,JavaScript 處理互動與應用邏輯。
現代 CSS 已具備變數、函式、條件查詢、網格版面及動畫等進階功能,因此不能把它視為單純的顏色設定工具。然而,功能豐富不等於技術分類改變。理解 CSS 的宣告式特性、層疊機制與容錯方式,才是正確回答「CSS 是程式語言嗎」並建立穩定網頁樣式的關鍵。
常見問題
1. CSS 到底是不是程式語言?
嚴格分類下不是。CSS 是樣式表語言,主要用來描述 HTML 或 XML 文件的外觀,不屬於一般用途的程式語言。
2. HTML 與 CSS 都不是程式語言嗎?
HTML 是標記語言,CSS 是樣式表語言。兩者都不是一般定義下的程式語言,但都是前端網頁開發的核心技術。
3. JavaScript 是程式語言嗎?
是。JavaScript 具備變數、函式、條件、迴圈、物件及非同步處理等能力,可用於瀏覽器、伺服器及其他應用環境。
4. CSS 寫錯會讓網站崩潰嗎?
通常不會。瀏覽器多半會忽略無效宣告並繼續處理其他樣式,但錯誤仍可能造成版面異常、內容難以閱讀或功能元件無法正常顯示。
5. SCSS 和 CSS 有什麼不同?
CSS 可由瀏覽器直接解析;SCSS 是 Sass 提供的語法格式,支援巢狀、混入、模組與控制指令,必須先編譯成 CSS。
6. CSS 可以進行計算嗎?
可以。CSS 提供calc()、min()、max()及clamp()等函式,但其運算主要服務於尺寸、版面與視覺呈現。
7. CSS 可以建立條件判斷嗎?
CSS 可透過媒體查詢、容器查詢及@supports依條件套用樣式,但這不等同於通用程式語言完整的流程控制。
8. CSS 應該寫在 HTML 裡還是獨立檔案?
小型測試可使用行內或內部樣式;正式、多頁網站通常應使用外部 CSS,以利快取、重複使用及集中維護。
9. 初學者需要使用 CSS 框架嗎?
不一定。應先理解選擇器、盒模型、Flexbox、Grid 及權重,再使用 Bootstrap、Tailwind CSS 等工具,否則遇到樣式衝突時較難除錯。
10. 學 CSS 需要會數學或程式設計嗎?
基礎 CSS 不需要高深數學,也不要求先學會程式設計。理解比例、座標、尺寸與基本邏輯會有幫助,而熟悉 HTML 則是開始學習 CSS 的重要基礎。