Featured image of post 現代 CSS 新功能的實際使用(子網格/容器查詢)Featured image of post 現代 CSS 新功能的實際使用(子網格/容器查詢)

現代 CSS 新功能的實際使用(子網格/容器查詢)

從視窗標準到獨立組件的典範轉移

傳統的響應式網頁設計依賴螢幕(視口)的整體寬度。然而,在當今元件導向的設計世界中,UI 元件的可用寬度會根據它們所在的父元素(側邊欄或主列)而有所不同。

隨著CSS Grid的「子網格」和「容器查詢」的出現,佈局的靈活性和可維護性得到了極大的提升。


配方 1:「subgrid」在對齊卡片高度的同時同步按鈕位置

即使在多列卡片UI中標題字元數不均勻,每張卡片中「圖像、標題、文字和按鈕」的高度也可以在水平線上完美對齊。

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 4; /* 画像・タイトル・本文・フッターの4行を親グリッドに同期 */
}

不需要任何 JavaScript 來計算每張卡片的高度。

方法 2:@container 其佈局依其寬度調整

卡片組件會根據其所在容器的寬度自動在水平和垂直對齊之間切換。

.card-wrapper {
  container-type: inline-size;
  container-name: card-container;
}

@container card-container (min-width: 450px) {
  .card-content {
    flex-direction: row; /* 横幅に余裕があれば横並びへ自動変形 */
  }
}

您可以在主頁的寬區域和側邊欄的窄區域中重複使用相同的元件。


實際實作的概念

子網格和容器查詢已經在主要的現代瀏覽器中完全支援。擺脫整個螢幕上的斷點造成的破壞,並轉向每個組件都可以獨立存在的 CSS 設計。