搜尋

CSS 語法規則與結構

CSS 雖然不能真正算是程式語言,但也是一種「樣式語言」,因此也會有撰寫的語法規則和結構,這篇教學會介紹 CSS 的語法規則和結構,只要掌握基本要領,就能寫出容易閱讀與管理的 CSS。

快速導覽:

CSS 教學 -  CSS 語法規則與結構

規則結構

每個 CSS 規則主要分成兩個結構,分別是「選擇器 selector」和「宣告區塊 declaration」,選擇器位在結構的左側,可以選擇 HTML 裡的特定元素,宣告區塊位在結構的右側,由「大括號 {}」搭配一個以上的「宣告」組成,每個宣告又由一組「屬性:數值」組成,每個宣告使用「分號 ;」結尾

CSS 教學 -  CSS 語法規則與結構 - 規則結構

舉例來說,下方的寫法執行後,會將 h1 裡的文字改成「黃底紅字」。

h1 { color:red; background:yellow; }

實際撰寫時,如果有很多的宣告內容,也可以改成下方「列表式」的寫法,在閱讀上也會更加一目瞭然。

h1 { 
  color:red; 
  background:yellow; 
}

空白與縮排

CSS 的「空白」主要在處理「排版與縮排」,與規則並沒有實際的關聯性,然而 CSS 在處理空白的方式與 HTML 相同,會將「多個連續空白合併為一個空白」,下方列出一些常用的空白與縮排規則,實際撰寫時不一定要按照這些規則,但這是最常見的排版方式。

出現空白的情況 幾個空白
選擇器與宣告區塊 1 個空白
不同宣告之間 1 個空白
宣告區塊的大括號 1 個空白
屬性的冒號後方 不用空白或 1 個空白
宣告內的縮排 2 個空白

下方範例的 h1 是大多數編輯器自動排版時會用的方法,h2 是許多工程師撰寫 CSS 時常見的寫法,p 則是單行 CSS 的常見寫法。

h1 {
  font-size: 30px;
  color: red;
  background: yellow;
}
h2 {
  font-size:20px;
  color:blue;
  background:green;
}
p { font-size:14px; color:black; background:white; }

廠商字首

早期 CSS 為了因應不同的瀏覽器,刻意在許多支援度不同的屬性前方,使用「破折號 -」標記「廠商字首 vendor prefix」,藉以區分不同的瀏覽器所呈現的效果,但隨著瀏覽器的進步,逐漸不需使用這些廠商字首,但如果要跨足比較舊版的瀏覽器,部分屬性可能還是需要加上廠商字首。

常見的廠商字首如下:

  • -webkit-:以 Webkit 為基礎的瀏覽器,例如 Chrome、Safari。
  • -moz:以 Mozilla 為基礎的瀏覽器,荔竹 Firefox。
  • ms:以微軟 IE 為基礎的瀏覽器。
  • o:以 Opera 為基礎的瀏覽器。

註解

CSS 的註解類似 C/C++ 的註解模式,使用「/* */」包覆註解的內容註解可以自己獨立一行,或擺放在宣告區塊後方,例如下方兩種方式都是常見的註解寫法。

注意,註解不能寫在宣告區塊裡。

/* 這是 h1 呦 */
h1 { color:red; }
h2 { color:blue; }  /* 這是 h2 呦 */

除了單行註解,也可以使用「多行註解」的方式,例如下方使用多行註解的方式說明 h1 和 h2 的差異。

/* 這是 h1 呦
   顏色是紅色
   表示大標題 */
h1 { color:red; }

/* 這是 h2 呦
   顏色是藍色
   表示各個段落的小標題 */
h2 { color:blue; }

使用多行註解需要注意註解的結尾「*/」,只要是包覆在註解裡的內容,都會成為註解的一部分,以下方的程式碼為例,因為有一些規則被註解所包覆,因此這些規則就不會執行,最後就只有 h1 被改變顏色,h2 和 h3 都不會改變顏色。

h1 { color:red; } /* 這是 h1 呦
h2 { color:red; }    這是 h2 呦
h3 { color:red; }    這是 h3 呦 */

巢狀結構

除了 CSS 擴展語言 ( 例如 less、sass ) 可以使用巢狀結構 ( 大括號裡還有大括號 ),基本的 CSS「不支援」巢狀結構,只有「媒體特性 @media」或「特性查詢 @supports」才能使用類似巢狀結構的寫法,舉例來說,下方的 CSS 會讓文字在螢幕瀏覽時呈現紅色,列印時呈現藍色。

@media screen {
  h1 {
    color: red;
  }
}
@media print {
  h1 {
    color: blue;
  }
}

小結

CSS 的語法和結構相當簡單,且撰寫上也不容易出錯,就算出錯也只會影響版面設計,因此只要熟練掌握基本的原則,就能夠寫出乾淨漂亮的 CSS。

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

CSS 教學

基本介紹

認識 CSS 開始使用 CSS CSS 語法規則 CSS 命名原則

CSS 選擇器

認識 CSS 選擇器 優先順序 ( 權重 ) 樣式繼承與聯集 元素選擇器 ID 和 Class 選擇器 屬性選擇器 文件結構選擇器 虛擬類別選擇器 ( 結構 ) 虛擬類別選擇器 ( 類型 ) 虛擬類別選擇器 ( 輸入 ) 虛擬類別選擇器 ( 行為 ) 虛擬類別選擇器 ( 超連結 ) 虛擬類別選擇器 ( 邏輯 ) 虛擬類別選擇器 ( 其他 ) 虛擬元素選擇器 群組與組合選擇器

數值與單位

關鍵字與文字數值 長度與角度單位 顏色單位 位置名稱與時間單位

變數與內容函式

變數 數學計算 文字與清單計數 生成內容與引號

顏色與濾鏡

色彩模型 漸層色 影像濾鏡

文字樣式

使用通用字型 使用外部字型 @font-face 定義字型 文字尺寸 常用文字樣式 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 特殊文字樣式

元素容器

容器顯示類型 ( display ) 元素 display 對照表 盒子模型 ( Box Model ) 寬度與高度 內邊距 ( padding ) 外邊界 ( margin ) 邊框 ( border ) 邊框圓角 影像邊框 輪廓 ( outline ) 可見性與透明度 內容溢出與裁切

背景與陰影

背景顏色 背景圖 ( 定位、尺寸 ) 背景圖 ( 固定、重複 ) 背景圖 ( 多重背景、混合 ) 背景縮寫 ( background ) 容器陰影 ( box-shadow )

清單與表格

清單樣式 清單計數器 定義計數規則 表格基本樣式 表格邊框樣式 表格內容寬度與對齊

基本排版與定位

元素排版方式 浮動 ( float ) 浮動形狀 定位 ( position )

Flexbox 彈性排版

Flexbox 彈性盒子 Flexbox 對齊方式 Flexbox 彈性伸縮

Grid 網格排版

Grid 網格容器與格線 Grid 網格空間與命名 Grid 網格流向與間距 Grid 排列網格項目 Grid 項目對齊與順序

轉場與動畫

轉場 ( transition ) 轉場觸發事件 動畫 ( animation ) 動畫觸發事件 多重動畫的權重與順序

變形、裁切與遮罩

裁切路徑 ( clip-path ) 影像遮罩 ( mask )