喂!我是 Wei

Front-End Engineer

Be a Problem Solver.

⌘K

導覽

所有文章緣起互動小功能

文章分類

目錄
Flexbox 和 Grid 怎麼選?position absolute 相對誰?z-index 很大為什麼沒用?盒模型RWD 怎麼規劃?Container Query 是什麼?常見追問如何讓文字不要撐爆容器?100vh 在手機有什麼問題?怎麼處理跨瀏覽器?面試回答模板

相關文章

前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查

2026年6月24日

即時資料怎麼選?Polling、SSE、WebSocket 比較

2026年6月23日

前端系統設計:如何拆元件、資料流與大型專案架構?

2026年6月22日

最新文章
全部 →
前端 CI/CD 與正式環境除錯:從 Pull Request 到事故排查
2026-06-24
即時資料怎麼選?Polling、SSE、WebSocket 比較
2026-06-23
前端系統設計:如何拆元件、資料流與大型專案架構?
2026-06-22
無障礙不是加 ARIA:語意化 HTML、鍵盤操作與焦點管理
2026-06-21
CSS 與 RWD 面試整理:Flexbox、Grid、定位與層疊脈絡
2026-06-19
← 返回文章列表

CSS 與 RWD 面試整理:Flexbox、Grid、定位與層疊脈絡

2026年6月19日·約 4 分鐘閱讀·
前端面試系列CSSRWD

React 寫得熟,不代表 CSS 面試就能跳過。

許多前端職缺仍會直接考:

  • Flexbox 和 Grid 怎麼選?
  • z-index: 9999 為什麼還是被蓋住?
  • position: absolute 是相對誰定位?
  • RWD 怎麼規劃 breakpoint?
  • 怎麼處理內容溢出和跨瀏覽器問題?

Flexbox 和 Grid 怎麼選?

Flexbox 偏向一維排列,一次主要處理 row 或 column。

適合:

  • 導覽列
  • 按鈕群組
  • 垂直置中
  • 元件內部排列

Grid 偏向二維版面,可以同時控制 rows 和 columns。

適合:

  • Dashboard
  • 商品卡片網格
  • 複雜頁面版型
  • 需要對齊欄與列的畫面
.toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
 
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

面試回答不要說 Grid 比 Flex 新所以比較好,兩者解決的維度不同,也常一起使用。


position absolute 相對誰?

position: absolute 會相對最近一個 position 不是 static 的 ancestor 定位。

.card {
  position: relative;
}
 
.badge {
  position: absolute;
  top: 8px;
  right: 8px;
}

如果找不到 positioned ancestor,就會相對初始 containing block。

其他常見值:

  • relative:保留原本空間,可作為 absolute containing block
  • fixed:通常相對 viewport
  • sticky:在指定 scroll container 和門檻內黏住

z-index 很大為什麼沒用?

因為 z-index 不是全站共用的一條數字線,它會受到 stacking context 影響。

可能建立 stacking context 的條件包括:

  • positioned element 搭配 z-index
  • opacity < 1
  • transform
  • filter
  • isolation: isolate

子元素無法靠超大 z-index 跳出父層 stacking context。

遇到 modal 被蓋住,我會先用 DevTools 看 ancestor stacking context,而不是繼續把數字加大。React 專案也常用 Portal 把 modal render 到較高層 DOM。


盒模型

預設 content-box 的 width 不包含 padding 和 border。

* {
  box-sizing: border-box;
}

使用 border-box 後,設定的 width 會包含 content、padding、border,版面尺寸比較容易預測。


RWD 怎麼規劃?

我會採 mobile-first:先寫小螢幕的基本版,再用 min-width 增強大螢幕布局。

.layout {
  display: block;
}
 
@media (min-width: 768px) {
  .layout {
    display: grid;
    grid-template-columns: 240px 1fr;
  }
}

Breakpoint 不應只照特定裝置名稱,而是看內容在哪個寬度開始放不下。

也要考慮:

  • 長文字與多語系
  • 瀏覽器縮放
  • 虛擬鍵盤
  • safe area
  • hover 不一定存在
  • touch target 尺寸

Container Query 是什麼?

Media query 看 viewport;container query 看元件容器寬度。

.card-list {
  container-type: inline-size;
}
 
@container (min-width: 600px) {
  .card {
    grid-template-columns: 160px 1fr;
  }
}

它適合設計系統中的可重用元件,因為同一張 card 放在 sidebar 和主內容區時,可以依自己的容器調整,而不是依整個 viewport。


常見追問

如何讓文字不要撐爆容器?

依需求使用 overflow-wrap: anywhere、ellipsis、line clamp,並確認 flex child 是否需要 min-width: 0。

100vh 在手機有什麼問題?

行動瀏覽器網址列會伸縮,傳統 100vh 可能和可視區域不同。可以依場景考慮 dvh、svh、lvh。

怎麼處理跨瀏覽器?

先確認需求支援範圍,使用標準 CSS、Autoprefixer、feature query 和真實裝置測試,不應盲目為所有舊瀏覽器加 hack。


面試回答模板

Flexbox 適合一維排列,Grid 適合同時控制 rows 和 columns。RWD 我會以 mobile-first 和內容斷點規劃,不只針對特定手機型號。遇到 z-index 問題會先檢查 stacking context;元件需要依自身空間調整時會考慮 container query。實作時也會測長文字、鍵盤操作、觸控尺寸和主要瀏覽器,而不是只讓設計稿尺寸看起來正確。

分享:XLinkedIn
← 上一篇Web 安全面試整理:XSS、CSRF、CORS 與 CSP
下一篇 →無障礙不是加 ARIA:語意化 HTML、鍵盤操作與焦點管理