初學者指南:CSS Grid 的 repeat() 函數
更新日期: 2024 年 11 月 5 日
在 CSS Grid 中,repeat()
函數是一個非常實用的工具,能讓我們更輕鬆地設定多重的欄(columns)或列(rows)配置。
對於希望簡化代碼並提高可讀性的開發者來說,repeat()
是不可或缺的功能。
本文將帶您了解 repeat()
的基本概念,並通過範例展示它的應用。
什麼是 repeat()
函數?
repeat()
函數是 CSS Grid 中,用來重複設置欄和列的簡便方法。
當我們需要多個欄或列,且其尺寸相同時,repeat()
可以讓我們避免手動撰寫每個尺寸,從而使代碼更簡潔易懂。
基本語法
repeat(重複次數, 欄或列的大小)
重複次數
:要重複的次數,例如3
表示重複 3 次。欄或列的大小
:每個欄或列的大小,可以是固定的像素值(如100px
)、百分比(如20%
)、比例(如1fr
)等。
基本範例
grid-template-columns: repeat(3, 1fr);
上例等價於:
grid-template-columns: 1fr 1fr 1fr;
這段代碼會創建三個等分的欄,且每一欄都佔整個容器的三分之一。
為什麼要使用 repeat()
?
當我們在網格布局中,有許多相同大小的欄或列時,repeat()
可以簡化代碼。
例如,如果您需要 12 欄且每欄寬度都相等,那麼使用 repeat(12, 1fr)
就可以大大縮短代碼,使其更容易理解和維護。
使用 repeat()
主要有以下幾個優勢:
- 提高可讀性:減少重複代碼,使布局設置一目了然。
- 更易於維護:如果欄或列數量需要調整,只需改變重複次數即可,不用一一改寫。
- 支援響應式設計:搭配其他功能(如
minmax()
函數),能更靈活地控制響應式佈局。
repeat()
的應用範例
範例:建立等分欄位
假設我們希望創建四欄的等分布局,可以使用 repeat()
來簡化程式碼。
.container {
display: grid;
grid-template-columns: repeat(4, 1fr);
}
這段代碼創建了一個四欄的布局,每欄的寬度相等,且佔整個容器的四分之一。
範例:設定固定大小的欄位
如果您希望創建 5 個固定寬度為 200px
的欄,可以這樣寫:
.container {
display: grid;
grid-template-columns: repeat(5, 200px);
}
此範例將會創建 5 個寬度均為 200px 的欄。
範例:交錯寬度的重複欄
repeat()
函數也可以使用多個不同的尺寸來建立交錯寬度的欄。
例如,您可以使用 repeat(2, 100px 200px);
創建一個包含交錯寬度的佈局:
.container {
display: grid;
grid-template-columns: repeat(2, 100px 200px);
}
這段代碼會創建四個欄,其寬度分別是 100px
、200px
、100px
、200px
。
repeat(2, 100px 200px)
表示「重複 2 次 100px 200px
的組合」,從而形成一個交錯的欄寬效果。
範例:混合使用 repeat()
和其他值
有時我們需要一些固定大小的欄,再加上一些自動填滿的欄。
例如,創建一個布局,包含兩個寬度為 100px 的欄和三個等分的欄:
.container {
display: grid;
grid-template-columns: 100px 100px repeat(3, 1fr);
}
這段代碼創建了一個共五欄的布局,前兩欄寬度為 100px,後三欄等分剩餘空間。
進階:使用 repeat()
與 auto-fill
和 auto-fit
CSS Grid 的 repeat()
也可以與 auto-fill
和 auto-fit
結合使用,以自動填滿可用空間,適合用於響應式設計。
auto-fill
的應用
auto-fill
可自動重複欄的大小,直到容器的寬度不足以容納更多欄為止。
例如:
.container {
display: grid;
grid-template-columns: repeat(auto-fill, 150px);
gap: 10px;
}
在此例中,欄的寬度固定為 150px,網格會自動填滿整個容器的寬度,適合在響應式設計中使用。
auto-fit
的應用
auto-fit
和 auto-fill
類似,但在容器空間不足以再容納新的欄時,它會自動調整欄的大小來填滿空間。
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 10px;
}
在此例中,每個欄的寬度會在 150px
到 1fr
之間自動調整,以填滿容器剩餘空間。
結語
repeat()
函數為 CSS Grid 帶來了極大的便利,特別是面對重複的欄和列設置時,讓我們的代碼更加簡潔、易於維護。
它不僅適用於靜態佈局,還能搭配 auto-fill
和 auto-fit
等功能,在響應式設計中發揮作用。
掌握 repeat()
的使用,將使您的 CSS Grid 佈局設計更加靈活,適應不同尺寸的裝置。