一個在頁面中完全於瀏覽器內執行的 CSS Grid 產生器,是產生明確 grid 宣告最可靠的 API 替代方案,因為其輸出是由已驗證的輸入產生、一鍵即可複製,並且完全不依賴遠端服務。當開發者搜尋「css grid generator api alternative」時,他們通常是想逃離以 API 為先的版面工具所帶來的實際痛點:速率限制、權杖管理、帳號鎖定、請求逾時、不透明的伺服器端轉換,以及無法閱讀或稽核產生其樣式的程式碼路徑。本地產生器能避開上述每一種失敗模式。CSS Grid Generator 接受有界的數值輸入與封閉的列舉對齊值,從單一已驗證的組態衍生出軌道清單與即時預覽,並輸出一個作者無需離開瀏覽器即可閱讀、複製、貼上的標準化 .grid 規則。產生與預覽都在本地進行,因此沒有上傳、沒有遠端服務,也沒有任何關於片段在進入樣式表前會包含什麼內容的模糊空間。

為何開發者以本地產生器取代基於 API 的 grid 工具
基於 API 的 grid 工具通常是透過 HTTPS 接受一個 JSON 酬載,接著回傳 CSS,讓呼叫端串接到建置步驟中。在私有儲存庫中,這代表必須儲存憑證、關注速率限制、處理 5xx 回應,並且信任第三方服務每次都會回傳有效的 CSS。在正式管線中,建置時的 API 故障會成為部署阻斷;在用戶端原型中,同樣的故障會讓頁面一片空白。本地產生器將整條管線轉換成開發者螢幕上已可見輸入的確定性函式。
CSS Grid Generator 顛倒了這個關係。輸入於瀏覽器中驗證,輸出由同一份已驗證的組態產生,即時預覽也由同一份資料繪製。沒有任何資料經由網路傳送。編輯任何控制項都會清除先前產生的區塊、先前的錯誤,以及先前的複製狀態,因此螢幕上的片段永遠對應當前組態。對於需要可稽核輸出的團隊而言,這個特性比任何 API 能提供的功能都更有價值,因為程式碼路徑可供閱讀,且輸入契約由實作本身強制執行。其結果是一個行為類似離線參考表的工具:每個屬性、每個單位、每個權杖都來自實作所擁有的一組固定集合。
產生器接受什麼、會輸出什麼
三個數值輸入與兩個列舉輸入對應到單一 .grid 規則。數值欄位為欄數、列數,以及間距。列舉欄位為 justify-items 與 align-items。超出範圍、帶正負號、帶小數、含空白前後綴、含單位後綴、空值,或過長的數值文字都會產生明確錯誤,且不會輸出 CSS。封閉列舉各自僅限四個值。
| 輸入欄位 | 可接受的值 | 其控制項目 |
|---|---|---|
| Columns | 1 至 12(整數) | 由 grid-template-columns 輸出的欄軌道數量 |
| Rows | 1 至 12(整數) | 由 grid-template-rows 輸出的列軌道數量 |
| Gap | 0 至 100(整數,像素) | 套用於列與欄之間的單一 px 間距 |
| justify-items | stretch、start、center、end | 每個項目在其 grid 區域內的預設行內軸對齊 |
| align-items | stretch、start、center、end | 每個項目在其 grid 區域內的預設區塊軸對齊 |
欄位文字上限為 32 個 UTF-16 碼元,舒適地高於最長的有效輸入(數字「100」共三個字元),且仍短到足以在到達驗證器之前拒絕貼上的垃圾內容。
輸出以 display: grid 起頭,以建立 grid 格式化上下文。接著使用 repeat(n, minmax(0, 1fr)) 輸出 grid-template-columns 與 grid-template-rows。每條軌道取得一整等份可用空間,而 minmax(0, 1fr) 為彈性軌道提供零下限,避免長的 min-content 貢獻將軌道撐得比容器更寬。
| 宣告 | 範例值 | 用途 |
|---|---|---|
| display | grid | 於 .grid 選擇器上建立 grid 格式化上下文 |
| grid-template-columns | repeat(4, minmax(0, 1fr)) | 四條等寬的欄軌道,各自允許縮減至零 |
| grid-template-rows | repeat(2, minmax(0, 1fr)) | 兩條等高的列軌道,具有相同的彈性下限 |
| gap | 16px | 套用於列與欄之間的單一像素間距 |
| justify-items | center | 每個 grid 項目的預設行內軸對齊 |
| align-items | stretch | 每個 grid 項目的預設區塊軸對齊 |
此輸出對應於 W3C CSS Grid Layout Module Level 2 規格,並已與 grid-template-columns、gap、justify-items 與 align-items 的 MDN 參考交叉比對。
使用本地產生器建立 CSS grid 宣告
- 於瀏覽器中開啟 CSS Grid Generator。當目前輸入無效時,預覽會顯示一個有完整文件記載的安全預設值。
- 輸入 1 至 12 之間的整數欄數、1 至 12 之間的整數列數,以及 0 至 100 之間的整數像素間距。任何超出這些範圍的值都會產生明確錯誤,而不會輸出 CSS;數字 101 並不會被悄悄改為 100。
- 從封閉列舉 stretch、start、center 或 end 中選擇 justify-items 值,並從同樣的四值列舉中選擇 align-items 值。預覽會在您變更任一個下拉選單時立即更新。
- 檢查永遠可見的預覽。當所有欄位有效時,預覽會顯示目前的軌道數、間距與對齊值;當任一欄位無效時,則重設為有完整文件記載的三欄兩列預設值。
- 點擊 Generate CSS。完整的 .grid 規則隨即出現,以 display: grid 起頭,並以所選的對齊宣告作結。
- 點擊 Copy。瀏覽器的剪貼簿 API 會接收該片段,並顯示確認訊息。若剪貼簿權限被阻擋,則會以手動複製訊息取代確認訊息,程式碼仍保持可選取狀態,以便您自行按下 Ctrl+C 或 Cmd+C。
- 將 .grid 規則貼入樣式表,並套用至容器元素。容器的子元素會成為 grid 項目,並依所選預設值對齊。
每次編輯都會清除先前產生的區塊、先前的錯誤,以及複製狀態計時器,因此螢幕上的片段永遠對應當前組態。若您在複製後重新操作任一控制項,計時器會被取消,複製狀態會重設;在 CSS 已變更後,較舊的權限結果無法再顯示「Copied」。
輸出的結構:repeat() 與 minmax(0, 1fr)
產生器會輸出帶有 display: grid 的 .grid 規則以啟動 grid 格式化上下文,接著對兩個軸的樣板使用 repeat(n, minmax(0, 1fr))。repeat() 標記法避免重複相同的軌道函式多次;minmax(0, 1fr) 為每條軌道提供彈性上限,同時將其下限釘在零。將下限設為零之所以重要,是因為 1fr 軌道的預設下限為 auto,會解析為該軌道中任何項目的最大 min-content 大小。在含有長字、程式碼片段或固定寬度子元素的真實版面中,預設下限可能將軌道撐得比容器更寬。
零下限讓軌道能縮減至其應得的一份可用空間,並讓作者透過 overflow-wrap、項目的 min-width: 0,或儲存格內的內容尺寸規則來處理溢位。W3C Grid Layout Module Level 2 將 repeat()、fr 單位與 grid-template-columns 定義為明確 grid 宣告;產生器的輸出正是該規格的字面應用。
這是一個實用的等寬軌道模式。它本身並非回應式的正式版面。當軌道數需依視埠大小而改變時,作者仍應加入媒體查詢、容器查詢、auto-fit 模式,或其他替代樣板。如需深入了解當軌道需表現得不同於等寬切片時 fr 與 minmax 的行為,請參閱如何使用 fr 與 minmax 讓 CSS grid 具備彈性指南。
justify-items 與 align-items:控制項目擺放位置
justify-items 控制每個 grid 項目在其 grid 區域內沿行內軸的對齊方式。align-items 提供沿區塊軸的對應預設對齊。產生器為每個屬性提供四個廣泛適用的封閉值:stretch、start、center 與 end。當項目的尺寸允許時,Stretch 會填滿相關軸。Start 與 end 將項目推向對應邊緣,而 center 則將其置於邊緣之間。
這些控制項用於將項目對齊在其被分配的區域內。它們不是 justify-content 或 align-content,後者是用來將 grid 軌道作為一個整體對齊於較大的容器內。它們也不負責指派個別的 grid-row、grid-column 或 grid-area 配置。若某個版面需要橫跨兩欄的主要項目,或從第三列開始的側邊欄,該配置必須由作者在相關的子元素上自行新增,而非由產生器處理。align-items 的 MDN 參考文件記載了完整的 CSS 值集合,以及每個值在結合項目本身尺寸與內在尺寸時如何解析。
讓片段可安全使用的驗證規則
此處的安全性是確定性的,而非基於對任意文字進行跳脫。實作嚴格地解析三個原始文字欄位,且不做修剪或瀏覽器側的夾值:欄與列必須為 1 至 12 的整數,間距必須為 0 至 100 的整數。可接受的輸入為一至十二條軌道,加上零至 100 像素的間距。超出範圍、帶正負號、帶小數、含空白前後綴、含單位後綴、空值,或過長的數值文字會在字串產生之前被拒絕。
產生器在對齊方面重複相同的概念。對齊選擇必須完全符合四個內部列舉值之一。CSS 屬性名稱、標點符號、單位、.grid 選擇器、repeat()、minmax() 與 fr 權杖皆由實作固定。即使呼叫端繞過可見的 select 控制項,像 center 後接另一個宣告這類經過精心構造的值也會被拒絕。不會從使用者輸入插補任何任意的選擇器、屬性、自訂值、URL、註解、大括號、分號或樣式表片段。同一份驗證也驅動即時預覽:無效輸入會回退為有完整文件記載的安全三欄兩列預設值,而不是顯示陳舊或部分解讀的輸入。
From generated snippet to a production layout
The .grid rule is a clear starting point rather than a complete page layout. The generator does not create named areas, implicit tracks, auto-placement controls, subgrid, masonry, responsive breakpoints, source-order changes, spans, or per-item alignment. Those are real layout features and they have to be added by the author against the actual content of the page.
For a responsive version, the simplest first step is a single media query that swaps the grid-template-columns value at a chosen breakpoint. Container queries offer a more local alternative when the column count should follow a card's container rather than the viewport. For variable-width tracks, the auto-fit keyword and a minmax() range can be added to the same grid-template-columns declaration. For semantic ordering, use CSS only after the HTML order has been arranged for keyboard navigation and assistive technology; visual grid reordering should never replace logical document order. Add semantic HTML first, then adapt the generated declarations to the actual content and responsive requirements of the project.
For a hands-on walkthrough of the same track pattern applied to a small symmetric grid, see the guide on how to make a 3x3 grid in CSS.