搜尋

元素可見性 visibility、透明度 opacity

visibility 和 opacity 樣式屬性就如同字面的意思,表示元素的可見性和透明度,這兩個樣式可以將元素「顯示」或「隱藏」,這篇教學會介紹元素可見性 visibility 樣式的 visible、hidden、collapse 屬性值,以及 opacity 透明度的用法。

快速導覽:

CSS 教學 - 元素可見性 visibility、透明度 opacity

visibility 撰寫語法

visibility 是一個很簡單的樣式屬性,主要可以將元素「隱藏」或「顯示」,因為具有繼承特性,所以如果父元素設定了隱藏,則子元素也會一併隱藏,這個樣式有下列屬性值:

屬性值 說明
visible 顯示 ( 預設值 )
hidden 隱藏,仍然保留容器空間。
collapse 對於 trtbodycolcolgroup 元素等於 display:none,其他元素則等同 visibility:hidden

屬性值 visible 和 hidden

visibility 的屬性值 visiblehidden 分別表示元素「顯示」或「隱藏」,但隱藏不等於 display:none 的完全消失,仍然會保留原本所佔的容器空間 ( 類似 opacity:0 ),隱藏元素所包含的子元素也會一併隱藏,也會失去透過鍵盤 tab 切換焦點的功能 ( 例如切換選單 )。

下方的範例將 strong 元素和 h3 元素設定為 visibility:hidden,這兩個元素就會從畫面中消失,但其空間仍然保留。

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

<!-- HTML 程式碼 -->
<div>
  STEAM 教育學習網秉持著 STEAM/STEM 的精神<strong>OXXO.STUDIO</strong>,透過一系列免費且高品質的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。
</div>
<div>
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>orange</h4>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    margin: 10px;
  }

  strong, h3 {
    border: 1px solid red;
    visibility: hidden; 
  }
</style>

CSS 教學 - 元素可見性 visibility、透明度 opacity - visibility 的 visible 和 hidden

屬性值 collapse

collapse 是針對「表格」元素的屬性值,只要是 trtbodycolcolgroup 相關元素,設定後效果等於 display:none,元素會消失且不佔空間,如果是其他元素,則表現如同 visibility:hidden

下方範例呈現三個表格,第一個是正常表格,第二個表格使用 visibility:hiddentr 會保留空間,第三個表格使用 visibility:collapsetr 就會完全消失。

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

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>
<table class="c">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    border: 3px solid #000;
  }
  td {
    border: 1px solid #000;
  }
  .b tr:first-child {
    visibility: hidden;
  }
  .c tr:first-child {
    visibility: collapse;
  }
</style>

CSS 教學 - 元素可見性 visibility、透明度 opacity - visibility 屬性值 collapse

如果是作用在其他元素,表現就會如同 visibility:hidden,下方範例的兩個 h3 分別套用了 visibility:hiddenvisibility:collapse,呈現的結果完全相同。

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

<!-- HTML 程式碼 -->
<div class="a">
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>oxxo</h4>
</div>
<div class="b">
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>oxxo</h4>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    margin: 10px;
    width: 200px;
  }

  .a h3 {
    visibility: hidden;
  }

  .b h3 {
    visibility: collapse;
  }
</style>

CSS 教學 - 元素可見性 visibility、透明度 opacity - visibility 的 hidden 和 collapse 大同小異

opacity 透明度

opacity 樣式屬性可以設定元素的「透明度」,屬性值為 0~1 的浮點數,數值越大越不透明,0 表示全透明,具有繼承的特性,如果父元素設定了透明度,子元素也會一起變成透明,這個樣式屬性和 CSS 的透明度函式「filter:opacity()」用法大同小異,差別只在於函式的透明度是「參數」,而樣式的透明度是「屬性值」。

下方範例使用 opacityfilter:opacity() 兩種方法修改元素的透明度,呈現的效果完全相同。

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

<!-- HTML 程式碼 -->
<div class="a">
  <span>使用樣式 opacity:0.5</span>
  <div>
    <div>apple</div>
    <div>oxxo.studio</div>
  </div>
</div>
<div class="b">
  <span>使用濾鏡 filter:opacity(0.5)</span>
  <div>
    <div>apple</div>
    <div>oxxo.studio</div>
  </div>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 5px;
    margin: 10px;
    background: orange;
  }
  .a {opacity: 0.5;}
  .b {filter: opacity(0.5);}
</style>

CSS 教學 - 元素可見性 visibility、透明度 opacity - opacity 透明度

小結

visibility 樣式屬性使用時只需注意 collapse 有其對應元素,以及 hidden 隱藏的元素仍然會佔據空間,至於 opacity 就更簡單,只需要利用 0~1 的浮點數控制透明度,兩個都是非常容易上手的樣式屬性。

意見回饋

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

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 ) 物件填滿方式與定位 轉換函式 ( transform ) 3D 轉換與透視