進階篇:在父層使用 CSS 格線系統配置多欄排版

更新日期: 2024 年 11 月 11 日

在前面介紹的 CSS 格線系統中,通常是將格線樣式設定在子元素上,例如透過 col-12col-6 來設定各欄位的寬度。

然而,格線系統也可以靈活應用於父層級的設定,通過指定父層的「列數」來影響其子元素的排列。

這種方式在設計多欄排版時尤其高效,不僅能使佈局更整潔,還能減少在每個子元素上設定 class 的重複工作。

本文將介紹如何在父層設定 CSS 格線系統進行多欄配置。

閱讀本文前,建議先具備相關概念:CSS 格線系統簡介


使用 cols- 系列 Class 在父層設置欄位配置

在這種設定方式中,父層容器會使用 cols- 系列 class(例如 cols-2cols-3),以指定子元素自動分配的列數。

當設定了列數後,系統將自動計算並應用每個子元素的寬度。

HTML 結構範例

在 HTML 中,可以簡單地使用 cols- 類別來控制多欄的配置。

例如,cols-3 表示將其子元素分成三欄顯示。

<div class="container">
  <div class="row cols-3">
    <div class="col">
      <div class="box">卡片 1</div>
    </div>
    <div class="col">
      <div class="box">卡片 2</div>
    </div>
    <div class="col">
      <div class="box">卡片 3</div>
    </div>
  </div>
</div>

說明

  • .container:外層容器,控制整體寬度與置中。
  • .row:父層行容器,用於排版,並包含 cols-3 設置列數。
  • cols-3:指定 .row 下的所有 .col 元素應分為三等分。
  • .col:子欄位,在此範例中每個子元素寬度會自動分配為三等分,即 33.33%。

CSS 樣式設定:cols- 父層 Class 的配置

在 CSS 中,cols- 系列的 class 可以設定每一列包含的欄位數量。

此時,父層的 class 會決定其內部每個 .col 子元素的寬度。以下是範例設定:

.container {
  max-width: 1400px;
  padding: 0 10px;
  margin: auto;
}

.row {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
}

[class*="cols-"] > .col {
  box-sizing: border-box;
  padding: 0 10px;
}

.cols-2 > .col {
  width: 50%; /* 兩欄 */
}

.cols-3 > .col {
  width: 33.33%; /* 三欄 */
}

.cols-4 > .col {
  width: 25%; /* 四欄 */
}

.cols-5 > .col {
  width: 20%; /* 五欄 */
}

.cols-6 > .col {
  width: 16.66%; /* 六欄 */
}

說明

  • .row:設定 display: flex 讓子元素可以水平排列並自動換行。
  • [class*="cols-"] > .col:使用屬性選擇器為每個 .cols-* 的子 .col 設定內邊距與邊框。
  • .cols-2 > .col.cols-6 > .col:為不同欄數分別設定子元素的寬度。例如,cols-3 設置會將 .col 元素分為三等分。

父層與子層設定的組合應用

父層設置欄位配置可以與子層的 col- 系列 class 結合使用,使佈局更靈活。

父層定義每列顯示的子元素數量,子層的 col- class 則可以在需要時覆蓋指定的欄位寬度。

範例:父層與子層結合的 HTML 結構

以下範例展示了 cols-3 父層設置與 col-6 的子層 class 配合使用,靈活配置每個元素的寬度。

<div class="container">
  <div class="row cols-3">
    <div class="col col-6">
      <div class="box">卡片 1</div>
    </div>
    <div class="col">
      <div class="box">卡片 2</div>
    </div>
    <div class="col">
      <div class="box">卡片 3</div>
    </div>
  </div>
</div>

在這個例子中:

  • 父層的 cols-3 設定會將 .col 子元素分為三等分,每個子元素默認寬度為 33.33%。
  • col-6 class 覆蓋了第一個子元素的寬度,讓其佔據 50% 的寬度。

小結

在 CSS 格線系統中,使用父層設定欄位配置可以顯著提高排版效率,特別適合在多欄的卡片式布局中應用。

通過在父層設置 cols- 系列 class,我們可以更快速地調整整體排版,並且在需要時使用子層的 col- 類別進行進一步的覆蓋。

這種結合讓網頁佈局在不同裝置上更加靈活和一致,是現代網頁設計中有效的進階技術。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *