文檔流和z‐index - daniel-qa/Vue GitHub Wiki

文檔流和z-index

  • 文檔流 (Document Flow)

定義:HTML 和 CSS 預設的顯示順序

特性:元素按照 HTML 代碼順序從上到下排列

佔據空間:在文檔流中的元素會佔據空間,影響其他元素位置

  • 堆疊上下文 (Stacking Context)

定義:用來決定元素層級顯示順序的機制

建立條件:元素的 position 值不為 static 時建立

Position 值是否在文檔流 z-index 是否生效 定位參考 使用場景
static ✅ 在文檔流中 ❌ 無效 - 預設狀態
relative ✅ 在文檔流中 ✅ 有效 自身原位置 最常用,不影響佈局
absolute ❌ 脫離文檔流 ✅ 有效 最近的定位祖先 精確定位
fixed ❌ 脫離文檔流 ✅ 有效 視窗 固定位置
sticky 部分脫離 ✅ 有效 視窗 黏性定位
  • 基本規則

預設值:所有 DOM 元素預設 z-index: 0

數值規則:數值越大 = 層級越高 = 越上層顯示

生效條件:只對已定位元素(position ≠ static)有效

  • 常見 z-index 慣例
css.background { z-index: 0; }        /* 背景層 */
.content { z-index: 1; }           /* 一般內容 */
.dropdown { z-index: 100; }        /* 下拉選單 */
.tooltip { z-index: 500; }         /* 工具提示 */
.modal { z-index: 1000; }          /* 彈窗 */
.loading { z-index: 9999; }        /* 載入畫面 */
  • 基本使用
css.product-item {
  position: relative; /* 建立定位上下文,讓 z-index 生效 */
  z-index: 1;         /* 確保不會被固定元素覆蓋 */
}

解讀:

產品項目保持在文檔流中(按 HTML 順序顯示)

層級設為 1,高於預設的 0

會顯示在一般元素上方但低於更高 z-index 的元素