搜尋

樣式的繼承與聯集

使用選擇器套用樣式時,除了權重,另外的重要觀念就是「繼承」和「聯集」,繼承表示子元素會自動套用父元素的樣式屬性,聯集則是同一個元素,套用相同權重選擇器的樣式屬性,這篇教學會介紹樣式的繼承與聯集,以及如何透過瀏覽器的開發者工具,觀察樣式的繼承。

快速導覽:

CSS 教學 - 樣式的繼承與聯集

樣式的繼承

繼承是 CSS 的基本行為,意思是「子元素自動套用父元素的樣式屬性」,不過實際操作時,卻會發現「有些樣式屬性會繼承,有些樣式屬性則不會繼承」的狀況,下方列出會「預設」具有繼承特性的樣式屬性,這時候通常大多數「文字樣式」的屬性都會具有繼承特性。

注意,雖然繼承會保留樣式,但並不會繼承任何權重,所以權重最低,可以透過其他方式覆蓋。

屬性 中文說明 屬性 中文說明
azimuth SVG 指定光源屬性 border-collapse 儲存格邊框
border-spacing 儲存格邊框間距 caption-side 表格標題
color 文字顏色 cursor 滑鼠游標
direction inline 物件排列方向 empty-cells 空的儲存格
font-family 文字字體 font-size 文字大小
font-style 文字樣式 font-variant 定義文字大小寫
font-weight 文字粗細 font 文字樣式設定
letter-spacing 文字字母間距 line-height 文字行高
list-style-image 清單標示圖 list-style-position 清單標示位置
list-style-type 清單標示類型 list-style 清單樣式
orphans 頁面底部可見行數 quotes 引號嵌套規則
text-align 文字對齊 text-indent 字首縮排
text-transform visibility 控制字母大小寫
white-space 定義連續空白 widows 塊級元素頂部結合的最小行數
word-spacing 單字間距 - -

以下方的 HTML 和 CSS 為例,雖然只設定 #apple 的文字顏色和大小,但卻會影響到內容所有元素的文字樣式。

<!-- HTML 程式碼 -->
<div id="apple">
  <h2>oxxo.studio</h2>
  <div>STEAM 教育學習網</div>
  <p>hello world!!!</p>
</div>

<!-- CSS 程式碼 -->
<style>
  #apple {
    color: red;
    font-size: 30px;
  }
</style>

CSS 教學 - 樣式的繼承與聯集 - 具有繼承特性

不過如果是大多數方框模型 ( box model ) 的樣式屬性,例如 margin、padding、background 或 border...等,則不具有繼承的特性,目的也是為了避免套用樣式後,影響到整體排版,以下方的 HTML 和 CSS 為例,雖然設定了 #apple 的邊框和間距,但內容卻完全不會被影響。

<!-- HTML 程式碼 -->
<div id="apple">
  <h2>oxxo.studio</h2>
  <div>STEAM 教育學習網</div>
  <p>hello world!!!</p>
</div>

<!-- CSS 程式碼 -->
<style>
#apple {border: 1px solid #000;}
</style>

CSS 教學 - 樣式的繼承與聯集 - 沒有繼承特性

觀察樣式繼承

使用 Chrome 開啟網頁後,使用快速鍵 ( 通常是 alt + ctrl + i 或 alt + command + i ) ,或使用選單開啟「開發者工具」,可以觀察具有父子關係的元素,彼此的樣式是否繼承。

CSS 教學 - 樣式的繼承與聯集 - 開啟「開發者工具」

開啟開發者工具後,選擇 Element 頁籤就能觀察網頁中的元素結構,左側 Styles 頁籤裡能觀察特定元素的樣式。

CSS 教學 - 樣式的繼承與聯集 - 觀察特定元素的樣式

在 Styles 頁籤,如果有看見 inherited from XXXXX 的樣式,表示這些樣式屬性是透過繼承而來。

CSS 教學 - 樣式的繼承與聯集 - 這些樣式屬性是透過繼承而來

如果繼承的樣式屬性裡,有「不會被繼承」的樣式,那麼在 inherited from XXXXX 中這些屬性就會以較低亮度或灰色的方式呈現。表示子元素不會套用這些屬性,透過瀏覽器的開發者工具,可以很方便又快速的觀察樣式屬性的繼承。

CSS 教學 - 樣式的繼承與聯集 - 子元素不會套用這些屬性

樣式的聯集

如果說繼承是父元素的樣式繼承到子元素,聯集就是單一元素「套用多個選擇器的樣式」,通常套用樣式時,會先參考「權重」,而權重的參照標準不外乎就是行內樣式、順序、計算數值以及是否有添加 !important,但如果在權重相同的狀況下,就會進行樣式的聯集。

更多參考:CSS 選擇器的優先順序 ( 權重 )

舉例來說,下方是兩個 h1 的樣式,在包含的樣式屬性相同的狀況下,會按照順序執行,所以 h1 會呈現藍色文字。

h1 {color: red;}
h1 {color: blue;}

如果樣式裡具有不同的數性,則這些屬性會保留,只有重複的屬性會根據權重被取代,例如下方的 CSS,就會產生文字大小 30px,藍色文字,黃色底色的效果。

h1 {
  color: red;
  background: #ff0;
}
h1 {
  color: blue;
  font-size: 30px;
}

CSS 教學 - 樣式的繼承與聯集 - 樣式的聯集

小結

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 )