搜尋

背景顏色 background-color

運用 CSS 的 background-color 樣式,可以運用任何支援的色彩單位,將元素的背景指定成特定顏色,這篇教學除了介紹 background-color 的用法,還會介紹 background-clip 裁切背景樣式,明確設定背景顏色延伸的範圍。

快速導覽:

CSS 教學 - 背景顏色 background-color

background-color 撰寫語法

background-color 表示元素的「背景色」,可以運用任何支援的色彩單位,將元素的背景指定成特定顏色,background-color 有下列特性:

  • 預設背景色會延伸至「容器邊框外緣」。
  • 只支援「單色」,不支援漸層色或多種顏色。
  • 預設值為「transparent」透明色。
  • 在顯示階層中,background-color 會被 background-image 所覆蓋。
  • 不會繼承。

下方的範例會讓不同的元素呈現不同的背景色 ( 在預設狀態下,背景色會延伸填滿 padding 空間 )。

線上展示:https://codepen.io/oxxo/pen/KKjwLEQ

<!-- HTML 程式碼 -->
<div></div>
<span>hello oxxo</span>
<table>
  <tr><td>apple</td><td>orange</td></tr>
  <tr><td>coconut</td><td>banana</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  div {
    margin: 5px;
    width: 100px;
    height: 100px;
    background-color: pink;
  }
  span {
    margin: 5px;
    background-color: orange;
  }
  table {
    margin: 5px;
    padding: 10px;
    background-color: red;  /* 背景色會填滿 padding 空間 */
  }
  table tr td {
    background-color: green;
  }
  table tr:first-child td {
    background-color: cyan;
  }
</style>

CSS 教學 - 背景顏色 background-color - background-color 撰寫語法

如果利用 CSS 的 background 背景樣式縮寫語法,直接在後方填入色彩單位,效果和 background-color 完全相同。

線上展示:https://codepen.io/oxxo/pen/XWLJwGy

<!-- HTML 程式碼 -->
<div class="a">background-color: orange;</div>
<div class="b">background: orange;</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 10px;
    padding: 20px;
  }
  .a {background-color: orange;}
  .b {background: orange;}
</style>

CSS 教學 - 背景顏色 background-color - background-color 使用背景樣式縮寫語法

background-color 色彩單位

background-color 可以使用 CSS 支援的標準色彩單位。

延伸閱讀:顏色單位CSS 函式 ( 色彩模型 )

顏色單位 性質 範例
顏色名稱 使用 CSS 支援色顏色名稱 redblue
transparent ( 關鍵字 ) 透明。 transparent
十六進位色碼 紅綠藍十六進位色碼。 #ffc900#ffc90055
十六進位色碼 ( 簡寫 ) 簡寫紅綠藍十六進位色碼。 f00f005
rgb() RGB 色彩模型 ( sRGB 色彩空間 )。 rgb(255, 0, 0, 0.5)
hsl() HSL 色彩模型 ( sRGB 色彩空間 )。 hsl(120, 50%, 30%, 0.5)
lab() Lab 色彩模型 ( CIELab 色彩空間 )。 lab(100% -125 125 / 0.2)
lch() LCH 色彩模型 ( CIELab 色彩空間 )。 lch(50% 50 180 / 0.3)
oklab() OkLab 色彩模型 ( OkLab 色彩空間 )。 oklab(0.3 -0.4 0.4 / 0.8)
oklch() OkLCH 色彩模型 ( OkLab 色彩空間 )。 oklch(0.3 0.2 0 / 0.5)
color() 指定色彩空間顏色。 color(display-p3 0.5 1 0)
color-mix() 顏色混合。 color-mix(in srgb, blue 60%, white)
light-dark() 深色與淺色模式。 light-dark(#fa0, #06f)

下方範例使會使用五個 div,分別使用不同色彩單位來呈現背景色。

線上展示:https://codepen.io/oxxo/pen/vYqEwMN

<!-- HTML 程式碼 -->
<div class="a">background-color: orange;</div>
<div class="b">background: #00f6;</div>
<div class="c">background: rgb(0,200,100);</div>
<div class="d">background: hsl(10, 90%, 50%, 0.7);</div>
<div class="e">background: lch(50% 50 180 / 0.3);</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 10px;
    padding: 20px;
    font-size: 14px;
  }
  .a {background-color: orange;}
  .b {background: #00f6;}
  .c {background: rgb(0,200,100);}
  .d {background: hsl(10, 90%, 50%, 0.7);}
  .e {background: lch(50% 50 180 / 0.3);}
</style>

CSS 教學 - 背景顏色 background-color - background-color 色彩單位

不可置換行內容器的背景色

雖然不可置換行內容器無法調整寬高,但實際的「內容區域」仍然存在 paddingborder 的空間,因此套用背景顏色時,預設狀態下背景顏色仍然會填滿這些空間,此外,由於透過「行高」所產生的空間不屬於內容區域,就不會填滿背景色

參考:文字行高、文字縮排

下方的範例在兩個 div 裡放入行內容器元素,如果行內元素具有 paddingborder,則背景色預設會填滿這些區域,如果使用行高產生的空間則不會填滿背景色。

線上展示:https://codepen.io/oxxo/pen/yLdyWrj

<!-- HTML 程式碼 -->
<div class="a">
  <span>STEAM 教育學習網透過一系列<strong>免費且高品質</strong>的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>
<div class="b">
  <span>STEAM 教育學習網透過一系列<strong>免費且高品質</strong>的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 30px;
    padding: 10px;
    font-size: 14px;
    border: 1px solid #000;
  }
  strong {background: orange;}
  .a strong {
    padding:20px; 
    border: 10px solid #f005;  /* 利用 padding 和 border 延伸範圍 */
  }
  .b {line-height: 50px;}      /* 利用行高產生空間 */
</style>

CSS 教學 - 背景顏色 background-color - background-color 不可置換行內容器的背景色

可置換行內容器的背景色

網頁中的圖片元素 img 或 svg 都屬於「可置換」行內容器 ( 顯示類型大多都是 inline-block ),這些元素在預設狀態下 paddingborder 會向外擴展範圍,背景色也就會填滿這些範圍,又因為 borderpadding 的外面,和背景色互相搭配下,甚至能做出「雙色邊框」的有趣效果,如果圖片是透明背景,透明區域也會顯示背景色。

線上展示:https://codepen.io/oxxo/pen/oNrgRRv

<!-- HTML 程式碼 -->
<img class="a" src="https://steam.oxxostudio.tw/download/css/function-filter-demo.jpg">
<img class="b" src="https://steam.oxxostudio.tw/download/css/function-filter-demo.jpg">
<img class="c" src="https://steam.oxxostudio.tw/download/css/border-svg-2.svg">
    
<!-- CSS 程式碼 -->
<style>
  img {width: 120px;}
  .a {
    border: 10px solid #000;
    padding: 10px;
    background: red;
  }
  .b {
    border: 20px dashed #00f5;
    padding: 5px;
    background: #ff0;
  }
  .c {
    border: 5px double #000;
    padding: 5px;
    background: orange;
  }
</style>

CSS 教學 - 背景顏色 background-color - background-color 可置換行內容器的背景色

background-clip 裁切背景

在預設狀態下,CSS 會讓背景色或背景圖填滿整個容器空間,但透過 background-clip 可以設定「背景」的「填滿方式」,這個樣式具有下列屬性值:

屬性值 說明
border-box 預設值,背景延伸至 borderpadding 空間。
padding-box 背景延伸至 padding 空間。
content-box 背景只限於內容空間。
text 使用背景填滿文字 ( 文字本身顏色必須有透明度 )。

下方範例會展示四種 background-clip 的效果,需要注意如果屬性值為 text,表示會填滿「文字」,需要使用有透明度的文字,或將文字設為透明色 transparent 才能看見背景。

線上展示:https://codepen.io/oxxo/pen/jOjEooY

<!-- HTML 程式碼 -->
<br>
<div class="a">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: border-box;</span>
</div>
<div class="b">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: padding-box;</span>
</div>
<div class="c">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: content-box;</span>
</div>
<div class="d">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: text;</span>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 300px;
    margin: 10px;
    padding: 10px;
    font-size: 14px;
    border: 1px solid #000;
  }
  strong {
    background: orange;
    padding:20px; 
    border: 10px solid #00f5;
  }
  .a strong {background-clip: border-box;}
  .b strong {background-clip: padding-box;}
  .c strong {background-clip: content-box;}
  .d strong {
    background-clip: text;
    color: transparent;  /* 文字設定為透明 */
  }
</style>

CSS 教學 - 背景顏色 background-color - background-clip 裁切背景

小結

背景色是網頁設計裡使用頻率非常高的樣式,不論是分隔區塊、按鈕效果、互動顯示都會需要設定背景色,趕快運用這篇教學所介紹的內容,替網頁元素增添多一些背景色吧!

意見回饋

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

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 )